多线程
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{
@Override
public 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接口