这次探究直接用同步卖票的例子来分析(每个线程只能卖100张):
文章图片
文章图片
运行结果:没用使用join()前,交替卖票
文章图片
运行结果:前100张票都是线程0在卖,等线程0结束了以后,线程1和线程2才开始交替卖票
文章图片
运行结果:线程0和线程1交替卖票,线程0结束后线程2才开始卖票
上面的例子看不出线程0和线程1的关系,所以把卖票中睡眠时间改成0
文章图片
文章图片
文章图片
运行结果: 线程0和线程1依旧交替卖票,线程0卖完了线程2就可以开始卖票,后面就是线程1和线程2交替卖票
总结:join()方法可以使还没启动的线程(线程2)等待调用join()方法的线程(线程0)执行完才启动线程(线程2);join()方法不会影响已经启动了的线程(线程1)
【Java|简单卖票程序探究Thread.join()的作用】
推荐阅读
- Java|Java基础——数组
- 人工智能|干货!人体姿态估计与运动预测
- java简介|Java是什么(Java能用来干什么?)
- Java|规范的打印日志
- Linux|109 个实用 shell 脚本
- 程序员|【高级Java架构师系统学习】毕业一年萌新的Java大厂面经,最新整理
- Spring注解驱动第十讲--@Autowired使用
- SqlServer|sql server的UPDLOCK、HOLDLOCK试验
- jvm|【JVM】JVM08(java内存模型解析[JMM])
- 技术|为参加2021年蓝桥杯Java软件开发大学B组细心整理常见基础知识、搜索和常用算法解析例题(持续更新...)