线程的join方法

线程的join方法join()方法的作用就是让主线程等待子线程执行结束之后再运行主线程。下面示例中t2为主线程,需要等待子线程t1执行完成再执行使用场景,线程2依赖于线程1执行的返回结果在线程2中调用线程1的join方法,即把cpu资源让给线程1publicstaticvoidmain(String[]args)throwsException{Threadt1=newThread(()->{try{T.

大家好,又见面了,我是你们的朋友全栈君。

 join()方法的作用就是让主线程等待子线程执行结束之后再运行主线程。下面示例中t2 为主线程,需要等待子线程t1 执行完成再执行

使用场景,线程2依赖于线程1执行的返回结果

在线程2 中调用线程1的join方法,当线程调用了这个方法时,线程1会强占CPU资源,直到线程执行结果为止(谁调用join方法,谁就强占cpu资源,直至执行结束

这里说的是强占,而不是抢占,也就是说当这个线程调用 了join方法后,线程抢占到CPU资源,它就不会再释放,直到线程执行完毕。

    public static void main(String[] args) throws Exception{
      Thread t1 =  new Thread(()->{
          try {
              Thread.sleep(500);
              System.out.println("线程1醒了");
          } catch (InterruptedException e) {
              e.printStackTrace();
          }
            for(int i=0;i<100;i++){
                System.out.println("线程1 i:"+i);

            }
      });
      t1.setName("线程1");

      Thread t2 = new Thread(()->{
          try {
              t1.join();
          } catch (InterruptedException e) {
              e.printStackTrace();
          }
         for(int i=0;i<100;i++){
             System.out.println("线程2 i:"+i);
             try {
                 Thread.sleep(100);
             } catch (InterruptedException e) {
                 e.printStackTrace();
             }
         }
      });
      t2.setName("线程2");

        t2.start();
        t1.start();

    }

输出结果:

线程1醒了
线程1 i:0
线程1 i:1
线程1 i:2
线程1 i:3
线程1 i:4
线程1 i:5
……
线程1 i:99
线程2 i:0
线程2 i:1
线程2 i:2
线程2 i:3
线程2 i:4
……
线程2 i:99

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/144090.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 注册公司事宜(注册公司需要什么条件)

    本公司专主代办广州注册公司,广州公司注册,创业者可选择的注册公司主要有两类:一是在海外注册公司,二是在内地如广州注册公司,。不管在国内注册还是在海外基本的操作模式都是相同的,只不过对于成立的公司在手续、税收等政策上有点不同,但就是这点不同,会对未来的公司造成巨大的影响。一、在海外注册公司与广州注册公司的区别      创办企业者可以选择在海外注册公司,现在流行的注册海外公司的方法是注册离岸公司。

    2022年4月11日
    45
  • 简述计算机的发展史和应用领域_简述计算机的发展史

    简述计算机的发展史和应用领域_简述计算机的发展史计算机发展史`分类和应用领域第1章计算机基础知识计算机发展史、分类和应用领域数值、字符、汉字和图像编码计算机组成和原理计算机安全基础知识1.1计算机概述计算机技术的迅猛发展,促使人类走向丰富多彩的信息社会。信息时代的生产方式和生活方式具有数字化、集成化、智能化、移动化、个性化等特点。1.1.1计算机的发展世界上第一台电子数字式计算机ENIAC于1946年2月15日诞生在美国宾夕法…

    2022年10月11日
    0
  • php 覆盖率_java代码覆盖率工具

    php 覆盖率_java代码覆盖率工具简介:最近研究了PHP代码覆盖率的测试,后面发现了github一个开源项目(https://github.com/sebastianbergmann/php-code-coverage),对PHP代码覆盖率测试已经做得很好了,所以拿来直接用,这里总结怎么用这个开源项目。环境搭建一、安装php环境1、php要选高版本,亲测7.27可行,5.5就不行二、安装xdebug这个直接网上搜怎么安…

    2022年10月2日
    0
  • 制作p12证书[通俗易懂]

    制作p12证书[通俗易懂]创建AppID,下载对应证书,双击证书导入mac,在钥匙串中导出p12证书文件。使用第三方推送需要配置p12证书。我记得用企业证书发布企业app打包前也导入了p12文件,不知道p12是否必须使用,不过都导入也没有什么问题。现在苹果证书的生成,不过基本思路一样,大同小异。要想生成苹果首先要打开苹果研发者网站。首先点击Account进行用户名/密码登陆。至于苹果研发证书和发布证书…

    2022年6月15日
    175
  • PreEssentials与MFC集成使用

    PreEssentials与MFC集成使用

    2021年11月19日
    55
  • 全国职称计算机考试取消了吗,全国职称计算机考试取消必考模块 考生自选[通俗易懂]

    全国职称计算机考试取消了吗,全国职称计算机考试取消必考模块 考生自选[通俗易懂]全国职称计算机考试不再设必考模块,考生可选择自己擅长的模块进行考试。本月起,鞍山专业技术人员计算机应用能力考试系统将进行升级。调整后的题库中共有20个考试模块供考生选择报考。此前,职称计算机考试要设一个必考模块,调整后取消必考项目,考生可自主选择两个模块作为应考模块。据介绍,调整后的20个模块分别为:中文WindowsXP操作系统、Word2003中文字处理、Excel2003中文电子表格、Pow…

    2022年6月2日
    41

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号