当前位置: 首页 > news >正文

Java Thread join() 的用法

Java Thread中, join() 方法主要是让调用改方法的thread完成run方法里面的东西后, 在执行join()方法后面的代码。示例:
Java代码   收藏代码
  1. class ThreadTesterA implements Runnable {  
  2.   
  3.     private int counter;  
  4.   
  5.     @Override  
  6.     public void run() {  
  7.         while (counter <= 10) {  
  8.             System.out.print("Counter = " + counter + " ");  
  9.             counter++;  
  10.         }  
  11.         System.out.println();  
  12.     }  
  13. }  
  14.   
  15. class ThreadTesterB implements Runnable {  
  16.   
  17.     private int i;  
  18.   
  19.     @Override  
  20.     public void run() {  
  21.         while (i <= 10) {  
  22.             System.out.print("i = " + i + " ");  
  23.             i++;  
  24.         }  
  25.         System.out.println();  
  26.     }  
  27. }  
  28.   
  29. public class ThreadTester {  
  30.     public static void main(String[] args) throws InterruptedException {  
  31.         Thread t1 = new Thread(new ThreadTesterA());  
  32.         Thread t2 = new Thread(new ThreadTesterB());  
  33.         t1.start();  
  34.         t1.join(); // wait t1 to be finished  
  35.         t2.start();  
  36.         t2.join(); // in this program, this may be removed  
  37.     }  
  38. }  


如果去掉t1.join()这个语句过后, 输出的书序是乱的, 加上这个语句过后, 就会按照顺序输出,  从某种意义上说实现了同步。

 

转自:http://auguslee.iteye.com/blog/1292203

相关文章:

  • Airbnb个性化搜索服务架构
  • Skype for Business Server 2015-10-ADFS-2-配置
  • JAVA中的数据结构 - 真正的去理解红黑树
  • ViewPager+seekBar的联动效果
  • Babel 手记
  • 【Spring学习笔记-MVC-10】Spring MVC之数据校验
  • 为什么使用MAVEN 3.2.1会有版本问题?
  • ng6--错误信息小结(持续更新)
  • org.tinygroup.context2object-参数对象构建
  • 思考 | 云计算 + 区块链 = ?
  • devexpress表格控件gridcontrol设置隔行变色、焦点行颜色、设置(改变)显示值、固定列不移动(附源码)...
  • Day 33 三剑客-awk
  • HDU 4828 (卡特兰数+逆)
  • python学习-文件处理
  • 四、oracle 用户管理二
  • 【面试系列】之二:关于js原型
  • 2019.2.20 c++ 知识梳理
  • 4. 路由到控制器 - Laravel从零开始教程
  • Android 初级面试者拾遗(前台界面篇)之 Activity 和 Fragment
  • canvas 五子棋游戏
  • Consul Config 使用Git做版本控制的实现
  • ERLANG 网工修炼笔记 ---- UDP
  • HTTP请求重发
  • macOS 中 shell 创建文件夹及文件并 VS Code 打开
  • Odoo domain写法及运用
  • React16时代,该用什么姿势写 React ?
  • Spark in action on Kubernetes - Playground搭建与架构浅析
  • 给初学者:JavaScript 中数组操作注意点
  • 通过几道题目学习二叉搜索树
  • 用Python写一份独特的元宵节祝福
  • puppet连载22:define用法
  • ​【已解决】npm install​卡主不动的情况
  • # 飞书APP集成平台-数字化落地
  • ()、[]、{}、(())、[[]]命令替换
  • (02)vite环境变量配置
  • (4)事件处理——(6)给.ready()回调函数传递一个参数(Passing an argument to the .ready() callback)...
  • (C#)if (this == null)?你在逗我,this 怎么可能为 null!用 IL 编译和反编译看穿一切
  • (Java岗)秋招打卡!一本学历拿下美团、阿里、快手、米哈游offer
  • (安全基本功)磁盘MBR,分区表,活动分区,引导扇区。。。详解与区别
  • (规划)24届春招和25届暑假实习路线准备规划
  • (三)终结任务
  • (十)【Jmeter】线程(Threads(Users))之jp@gc - Stepping Thread Group (deprecated)
  • (转)scrum常见工具列表
  • (转)关于多人操作数据的处理策略
  • .NET / MSBuild 扩展编译时什么时候用 BeforeTargets / AfterTargets 什么时候用 DependsOnTargets?
  • .NET 应用架构指导 V2 学习笔记(一) 软件架构的关键原则
  • .NET/C# 反射的的性能数据,以及高性能开发建议(反射获取 Attribute 和反射调用方法)
  • .NET多线程执行函数
  • .net用HTML开发怎么调试,如何使用ASP.NET MVC在调试中查看控制器生成的html?
  • .pyc文件还原.py文件_Python什么情况下会生成pyc文件?
  • .set 数据导入matlab,设置变量导入选项 - MATLAB setvaropts - MathWorks 中国
  • /bin/bash^M: bad interpreter: No such file or directory
  • /etc/X11/xorg.conf 文件被误改后进不了图形化界面
  • @Autowired标签与 @Resource标签 的区别
  • [ 英语 ] 马斯克抱水槽“入主”推特总部中那句 Let that sink in 到底是什么梗?