直接调用线程的run方法是否可以启动线程?
程序员文章站
2022-04-04 16:30:26
首先Thread类中run()和start()方法的区别如下: run()方法:在本线程内调用该Runnable对象的run()方法,可以重复多次调用; start()方法:启动一个线程,调用该Runnable对象的run()方法,不能多次启动一个线程; 以上代码显示:run方法可以创建一个线程,但 ......
首先Thread类中run()和start()方法的区别如下:
run()方法:在本线程内调用该Runnable对象的run()方法,可以重复多次调用;
start()方法:启动一个线程,调用该Runnable对象的run()方法,不能多次启动一个线程;
1 public class Test implements Runnable{ 2 public static void main(String[] args) { 3 Test T = new Test(); 4 Test1 T1 = new Test1(); 5 6 Thread tt = new Thread(T, "t"); 7 Thread tt1 = new Thread(T1, "t1"); 8 9 tt.run(); 10 System.out.println("aaaaaa"); 11 tt1.run(); 12 System.out.println("bbbbbb"); 13 } 14 @Override 15 public void run() { 16 for(int i = 0 ; i < 10 ; i++){ 17 System.out.println("第一个" + i); 18 } 19 } 20 } 21 class Test1 implements Runnable{ 22 23 @Override 24 public void run() { 25 for(int i = 0 ; i < 10 ; i++){ 26 System.out.println("第二个" + i); 27 } 28 } 29 }
运行结果:
第一个0 第一个1 第一个2 第一个3 第一个4 第一个5 第一个6 第一个7 第一个8 第一个9 aaaaaa 第二个0 第二个1 第二个2 第二个3 第二个4 第二个5 第二个6 第二个7 第二个8 第二个9 bbbbbb
以上代码显示:run方法可以创建一个线程,但是相当于同步的方式,没有多线程的存在。
只有调用start方法才是交给jvm管理,才是多线程。
下一篇: 楼军:IDG为什么能培养出这么多人