Java中join线程操作实例分析

所属分类: 软件编程 / java 阅读数: 51
收藏 0 赞 0 分享

本文实例讲述了Java中join线程操作。分享给大家供大家参考,具体如下:

一 点睛

Tread提供了让一个线程等待另外一个线程完成的方法——join()方法。当在某个程序执行流中调用其他线程的join()方法时,调用线程将被阻塞,直到被join()方法加入的join线程执行完后为止。

join()方法通常由使用线程的程序调用,以将大问题划分成许多小问题,每个小问题分配一个线程。当所有小问题都得到处理后,再调用主线程来进一步操作。

二 代码

public class JoinThread extends Thread
{
   // 提供一个有参数的构造器,用于设置该线程的名字
   public JoinThread(String name)
   {
      super(name);
   }
   // 重写run()方法,定义线程执行体
   public void run()
   {
      for (int i = 0; i < 100 ; i++ )
      {
        System.out.println(getName() + " " + i);
      }
   }
   public static void main(String[] args)throws Exception
   {
      // 启动子线程
      new JoinThread("新线程").start();
      for (int i = 0; i < 100 ; i++ )
      {
        if (i == 20)
        {
           JoinThread jt = new JoinThread("被Join的线程");
           jt.start();
           // main线程调用了jt线程的join()方法,main线程
           // 必须等jt执行结束才会向下执行
           jt.join();
        }
        System.out.println(Thread.currentThread().getName()
           + " " + i);
      }
   }
}

三 运行结果

main  0
main  1
main  2
main  3
main  4
main  5
main  6
新线程  0
......
新线程  11
新线程  12
新线程  13
main  7
main  8
......
main  16
main  17
新线程  14
main  18
main  19
新线程  15
新线程  16
......
新线程  31
被Join的线程  0
新线程  32
被Join的线程  1
新线程  33
被Join的线程  2
新线程  34
被Join的线程  3
新线程  35
新线程  36
新线程  37
新线程  38
新线程  39
被Join的线程  4
被Join的线程  5
......
被Join的线程  13
被Join的线程  14
新线程  40
被Join的线程  15
被Join的线程  16
被Join的线程  17
新线程  41
新线程  42
被Join的线程  18
被Join的线程  19
......
被Join的线程  38
被Join的线程  39
新线程  43
新线程  44
新线程  45
被Join的线程  40
被Join的线程  41
被Join的线程  42
被Join的线程  43
新线程  46
新线程  47
新线程  48
......
新线程  60
新线程  61
被Join的线程  44
......
被Join的线程  98
被Join的线程  99
新线程  62
新线程  63
......
新线程  98
新线程  99
main  20
main  21
main  22
main  23

四 说明

1 程序开始是mian线程和新线程并发执行。

2 当i为20时,main线程开始等待“被Join的线程”执行完成,此时“被Join的线程”和“新线程”并发执行。

3 当“被Join的线程”执行完成,main线程继续运行,此时“main”和“新线程”并发执行。

更多java相关内容感兴趣的读者可查看本站专题:《Java进程与线程操作技巧总结》、《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧汇总》和《Java缓存操作技巧汇总

希望本文所述对大家java程序设计有所帮助。

更多精彩内容其他人还在看

JavaWeb项目部署到服务器详细步骤详解

这篇文章主要介绍了JavaWeb项目如何部署到服务器,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

IDEA基于支付宝小程序搭建springboot项目的详细步骤

这篇文章主要介绍了IDEA基于支付宝小程序搭建springboot项目的详细步骤,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
收藏 0 赞 0 分享

详解SpringBoot应用服务启动与安全终止

这篇文章主要介绍了SpringBoot应用服务启动与安全终止,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

Spring Boot启动及退出加载项的方法

这篇文章主要介绍了Spring Boot启动及退出加载项的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

Spring Data Jpa 自动生成表结构的方法示例

这篇文章主要介绍了Spring Data Jpa 自动生成表结构的方法示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

IDEA中osgi的开发应用指南详解

这篇文章主要介绍了IDEA中osgi的开发应用指南详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
收藏 0 赞 0 分享

详解用maven将dubbo工程打成jar包运行

这篇文章主要介绍了详解用maven将dubbo工程打成jar包运行,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

详解Java合并数组的两种实现方式

这篇文章主要介绍了Java合并数组的两种实现方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

使用Jenkins Pipeline自动化构建发布Java项目的方法

这篇文章主要介绍了使用Jenkins Pipeline自动化构建发布Java项目的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
收藏 0 赞 0 分享

使用Maven配置Spring的方法步骤

这篇文章主要介绍了使用Maven配置Spring的方法步骤,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
收藏 0 赞 0 分享
查看更多