ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

多线程,Join()

2021-12-05 15:03:33  阅读:149  来源: 互联网

标签:Join Thread System 线程 Thread1 多线程 运行 out


一、定义:就是该线程是指的主线程等待子线程的终止。也就是在子线程调用了join()方法,后面的代码,只有等到子线程结束了才能执行

二、不加join:

                        class Thread1 extends Thread{
                        private String name;
                        public Thread1(String name) {
                        	super(name);
                           this.name=name;
                        }
                    	public void run() {
                    		System.out.println(Thread.currentThread().getName() + " 线程运行开始!");
                            for (int i = 0; i < 5; i++) {
                                System.out.println("子线程"+name + "运行 : " + i);
                                try {
                                    sleep((int) Math.random() * 10);
                                } catch (InterruptedException e) {
                                    e.printStackTrace();
                                }
                            }
                            System.out.println(Thread.currentThread().getName() + " 线程运行结束!");
                    	}
                    }
                     
                    public class Main {
                     
                    	public static void main(String[] args) {
                    		System.out.println(Thread.currentThread().getName()+"主线程运行开始!");
                    		Thread1 mTh1=new Thread1("A");
                    		Thread1 mTh2=new Thread1("B");
                    		mTh1.start();
                    		mTh2.start();
                    		System.out.println(Thread.currentThread().getName()+ "主线程运行结束!");
                     
                    	}

          输出结果:

                main主线程运行开始!
                main主线程运行结束!
                B 线程运行开始!
                子线程B运行 : 0
                A 线程运行开始!
                子线程A运行 : 0
                子线程B运行 : 1
                子线程A运行 : 1
                子线程A运行 : 2
                子线程A运行 : 3
                子线程A运行 : 4
                A 线程运行结束!
                子线程B运行 : 2
                子线程B运行 : 3
                子线程B运行 : 4
                B 线程运行结束!
                发现主线程比子线程早结束

三、加join:

                          public class Main {
                           
                          	public static void main(String[] args) {
                          		System.out.println(Thread.currentThread().getName()+"主线程运行开始!");
                          		Thread1 mTh1=new Thread1("A");
                          		Thread1 mTh2=new Thread1("B");
                          		mTh1.start();
                          		mTh2.start();
                          		try {
                          			mTh1.join();
                          		} catch (InterruptedException e) {
                          			e.printStackTrace();
                          		}
                          		try {
                          			mTh2.join();
                          		} catch (InterruptedException e) {
                          			e.printStackTrace();
                          		}
                          		System.out.println(Thread.currentThread().getName()+ "主线程运行结束!");
                           
                          	}
                          }
      
    
                   输出结果:

                          main主线程运行开始!
                          A 线程运行开始!
                          子线程A运行 : 0
                          B 线程运行开始!
                          子线程B运行 : 0
                          子线程A运行 : 1
                          子线程B运行 : 1
                          子线程A运行 : 2
                          子线程B运行 : 2
                          子线程A运行 : 3
                          子线程B运行 : 3
                          子线程A运行 : 4
                          子线程B运行 : 4
                          A 线程运行结束!
                          主线程一定会等子线程都结束了才结束

标签:Join,Thread,System,线程,Thread1,多线程,运行,out
来源: https://www.cnblogs.com/jock766/p/15645568.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有