Java多线程的join() - 大油蛙

java

Java多线程的join()

假设在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() - 大油蛙 的全部内容, 来源链接: utcz.com/z/390215.html

回到顶部