线程的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年5月11日 下午10:40
下一篇 2022年5月11日 下午10:40


相关推荐

  • Eclipse中使用SVN[通俗易懂]

    Eclipse中使用SVN[通俗易懂]概述在我们的日常工作中,经常会用到SVN,大多数都是搭配Eclipse/MyEclipse使用。本文主要介绍SVN在Eclipse中的一些最长用的功能,包括SVN插件的下载使用、上传代码到服务器、从服务器下载代码、从服务器更新代码、解决代码冲突。本文链接:http://blog.csdn.net/v123411739/article/details/225121331.在Eclipse里下载Sub…

    2022年6月3日
    39
  • php一键安装包winnt,(推荐)Windows一键安装包安装

    php一键安装包winnt,(推荐)Windows一键安装包安装为了简化大家在 windows 下面的安装 我们在 xampp 基础上做了禅道企业版的 windows 一键安装包 xampp 是业内非常著名的 AMP 集成运行环境 禅道企业版的一键安装包主要在它基础上做了大量的精简 并集成了我们自主开发的控制面板 使用起来会更加方便 关于 xampp 一键安装包 大家有兴趣可以访问下面的官方网站 https www apachefriend org 注 这个是 xampp 官

    2026年3月18日
    3
  • oracle中varchar和char的区别_char跟varchar

    oracle中varchar和char的区别_char跟varchar1.varchar2把所有字符都占两字节处理(一般情况下),varchar只对汉字和全角等字符占两字节,数字,英文字符等都是一个字节;2.VARCHAR2把空串等同于null处理,而varchar仍按照空串处理;3.VARCHAR2字符要用几个字节存储,要看数据库使用的字符集,大部分情况下建议使用varchar2类型,可以保证更好的兼容性。注意:在oracle中varchar2的最大长…

    2025年7月24日
    12
  • NRZ、NRZI编码

    NRZ、NRZI编码RZ 编码 Return to zeroCode 归零编码 在 RZ 编码中 正电平代表逻辑 1 负电平代表逻辑 0 每传输完一位数据 信号返回到零电平 信号线上会出现 3 种电平 正电平 负电平 零电平 从图上就可以看出来 因为每位传输之后都要归零 所以接受者只要在信号归零后采样即可 这样就不在需要单独的时钟信号 实际上 RZ 编码就是相当于把时钟信号用归零编码

    2026年3月19日
    3
  • Scapy常用操作和命令(1)

    Scapy常用操作和命令(1)ls nbsp nbsp nbsp 列出 scapy 中实现的所有网络协议 ls ARP nbsp nbsp nbsp nbsp nbsp nbsp nbsp ARPASN1 Packet NoneBOOTP nbsp nbsp nbsp nbsp nbsp BOOTPCookedL cookedlinuxD nbsp nbsp nbsp nbsp nbsp nbsp DHCPoptionsD nbsp nbsp nbsp nbsp nbsp DHCPv6Generi

    2026年3月17日
    2
  • VSCode 删除当前行快捷键

    VSCode 删除当前行快捷键ctrl shift k

    2026年3月17日
    2

发表回复

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

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