多线程入门
多线程
Thread
现在的Thread中的run方法,已经被实现了,所以已经不需要实现了
操作
-
继承 extends Thread方法
-
重写run方法
-
start()
案例
public class ThreadTest extends Thread{public void run() {for (int i = 0; i < 100; i++) {System.out.println("多线程" + i);}}public static void main(String[] args) {ThreadTest threadTest = new ThreadTest();threadTest.start();for (int i = 0; i < 100; i++) {System.out.println("主线程" + i);}}
}
- 存在两个线程,一个是主线程,一个是其他的线程
- 当start时,并不是线程启动了,而是线程进入了就绪状态,当所有线程都进入了就绪状态,由CPU来分配资源
- 这个输出是,上面线程与下面线程同时进行的
Runnable
其实Thread也是实现了Runnable这个接口,同时这个接口中只有一个方法,,就是run方法
操作
- 实现Runnable接口
- 重写run方法
- 创建Thread时将 实现Runnable接口类放进去
- start
案例
public class RunableTest implements Runnable{@Overridepublic void run() {for (int i = 0; i < 100; i++) {System.out.println("多线程"+ i);}}
}public class Main {public static void main(String[] args) {Runnable runnable = new RunableTest();//Thread thread = new Thread(runnable);//thread.start();//与上面代码等效new Thread(runnable).start();for (int i = 0; i < 100; i++) {System.out.println("主线程"+i);}}
}
- 得到的结果跟上述的是一样的
总结
注意:
- 线程start(),并不是启动了,而是将加入到就绪队列,是与主线程一起的呢,再有cpu分配资源
- 实现多线程的方式存在两个
extends Thread
类 ,实现Runnable接口
,同时重写run方法 - Thread类也是实现了 Runnable接口