码迷,mamicode.com
首页 > 编程语言 > 详细

Java多线程的join()

时间:2015-02-27 20:11:26      阅读:168      评论:0      收藏:0      [点我收藏+]

标签:

假设在main线程里又起了一个thread1线程,在调用了thread1.start()之后:

如果在main线程里调用了thread1.join(),那么main线程将会block,直到thread1执行完了之后,main线程才会继续执行。

如果在main线程里没有调用thread1.join(),那么main线程和thread1线程将会并行执行。

测试代码如下:

 1 public class JoinThread extends Thread{
 2     public JoinThread(String name){
 3           super(name);
 4     }
 5     
 6     public void run(){
 7           for(int i=0; i<10; i++){
 8                 for(long k=0; k<100000000; k++){
 9                     System.out.println(this.getName() + ": " + i);
10                 } 
11           }
12     }
13     
14     public static void main(String[] args){
15           Thread thread1 = new JoinThread("AA AA");
16           thread1.start();
17           try{
18                 thread1.join();                 //Join在这里~
19           } catch(InterruptedException e) {
20                 e.printStackTrace();
21           }
22           for(int i=0; i<10; i++){
23               for(long k=0; k<100000000; k++){
24                   System.out.println(Thread.currentThread().getName() + ": " + i);
25               }   
26           }
27           System.out.println("over");
28     }
29 }

以上代码的执行结果如下:

AA AA: 0
AA AA: 0
AA AA: 0
AA AA: 0
AA AA: 0
AA AA: 0

这是因为main线程要等待thread1执行完了才能执行,因此thread1打印了一堆AA AA: 0

而如果将第17到21行注释掉之后再运行,结果如下:

main: 0

AA AA: 0

AA AA: 0

AA AA: 0
main: 0
main: 0

这是因为main线程和thread1线程在同时运行。

Java多线程的join()

标签:

原文地址:http://www.cnblogs.com/james6176/p/4304009.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!