1.3.线程基础_等待线程
来源:互联网 发布:linux cat 查看日志 编辑:程序博客网 时间:2024/05/09 13:41
等待线程
有时候我们需要等待其他线程完成后当前线程才可以继续执行。回顾之前的示例可以看到主线程和其他线程是并发运行的,回顾一下1.2中程序执行的日志:
主线程:启动线程Thread-0:0Thread-0:1Thread-0:2Thread-0:3主线程:中断线程主线程:退出Thread-0:线程被中断。Thread-0:取得中断信号状态:falseThread-0:线程退出。
可以看到主线程在其他线程仍然运行的情况下就完成了,如果要求主线程必须等其他线程完成后才能结束该怎么实现?也就是说主线程要等待其他线程完成,线程等待可以使用join方法,修改后实例如下:
public class JoinWorkThread { public static void main(String[] args){ JoinWorker worker = new JoinWorker(); Thread t1 = new Thread(worker); Thread t2 = new Thread(worker); System.out.println("main:开始启动工作线程"); t1.start(); t2.start(); System.out.println("main:已经启动所有工作线程"); System.out.println("main:等待工作线程"); try { t1.join(); t2.join(); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("main:退出"); }}class JoinWorker implements Runnable{ @Override public void run(){ for(int i=0; i<1000; i++){ if(i%100 == 0){ System.out.println(Thread.currentThread().getName() + ":" + i); } } }}
运行日志如下:
main:开始启动工作线程Thread-0:0Thread-0:100Thread-0:200Thread-0:300Thread-0:400Thread-0:500Thread-0:600Thread-0:700Thread-0:800Thread-0:900main:已经启动所有工作线程main:等待工作线程Thread-1:0Thread-1:100Thread-1:200Thread-1:300Thread-1:400Thread-1:500Thread-1:600Thread-1:700Thread-1:800Thread-1:900main:退出
0 0
- 1.3.线程基础_等待线程
- Java基础_线程
- java_基础_线程
- 线程等待
- 线程等待
- 线程等待
- 线程等待
- Java基础学习5_多线程(线程间通信--等待唤醒机制)
- 1.1.线程基础_创建线程
- 1.2.线程基础_中断线程
- 1.4.线程基础_线程组
- 1.5.线程基础_线程异常处理
- 1.6.线程基础_守护线程
- Java基础12:线程;等待唤醒机制;锁;线程优先级;
- 黑马程序员_线程基础
- 黑马程序员_线程基础
- Java基础_线程_多线程
- java线程间通信_线程同步_等待唤醒机制
- android 国际化EditText空格问题
- 通用字节序转换函数
- 旋转卡壳法求最大三角形
- hdu 1503 最长公共子序列
- 巧用QSignalMapper分类有序地处理大量信号
- 1.3.线程基础_等待线程
- 阿里巴巴集团2013年净利润达35.61亿美元
- 自定义UICollectionViewLayout并添加UIDynamic
- asp.net log4net 设置
- 1.4.线程基础_线程组
- 搞拓展性、灵活性的数据包过滤机制
- 佛学中的生活哲理2
- 转:C++深入浅出之正则表达式(一)
- 快速排序