如何控制线程执行的先后顺序
2016-05-01 15:10
459 查看
1.如果你有三个线程,分别为T1,T2,T3,如何让线程T2在线程T1之后执行,在线程T3之前执行。
答案是:使用线程的join方法,该方法的作用是“等待线程执行结束”,即join()方法后面的代码块都要等待现场执行结束后才能执行。事例代码如下:Java代码
package com.liuan.job;
public class Test {
@SuppressWarnings("static-access")
public static void main(String[] args) throws InterruptedException {
Thread t1 = new Thread(new Runner());
Thread t2 = new Thread(new Runner());
Thread t3 = new Thread(new Runner());
t1.start();
t1.sleep(5000);
t1.join();
t2.start();
t2.sleep(1000);
t2.join();
t3.start();
t3.join();
}
}
class Runner implements Runnable{
@Override
public void run() {
System.out.println(Thread.currentThread().getName()+"");
}
}
package com.liuan.job; public class Test { @SuppressWarnings("static-access") public static void main(String[] args) throws InterruptedException { Thread t1 = new Thread(new Runner()); Thread t2 = new Thread(new Runner()); Thread t3 = new Thread(new Runner()); t1.start(); t1.sleep(5000); t1.join(); t2.start(); t2.sleep(1000); t2.join(); t3.start(); t3.join(); } } class Runner implements Runnable{ @Override public void run() { System.out.println(Thread.currentThread().getName()+""); } }
执行结果是:
Thread-0
Thread-1
Thread-2
2.补充
线程的优先级无法保障线程的执行次序。只不过优先级高的线程获取 CPU 资源的概率大一点而已。相关文章推荐
- <img src> 和 background-image 区别
- Android之XmlSerializer生成xml文件
- CentOS服务器ntpdate同步
- [drp 4] 使用dom4j,读取XML数据,保存至数据库
- [drp 4] 使用dom4j,读取XML数据,保存至数据库
- Apache使用mod_jk/mod_proxy模块实现代理、负载均衡的配置
- VLC架构及流程分析
- mac重启privoxy命令
- JAVA数组排序——二分(折半)查找
- const常量与define宏定义的区别
- CentOS 7.0设置IP地址、网关DNS
- Jmeter使用之脚本录制回放
- 【SPOJ-BALNUM】Balanced Numbers【数位DP】【状态压缩】
- hdoj1114
- MySql中InnoDB引擎索引
- C++信号处理
- order by 多个参数容易造成的误解
- 【LeetCode】Remove Duplicates from Sorted List 解题报告
- matlab 信号与系统(一)—— 上采样(Upsampling)和下采样(Downsampling)
- Apache +Tomcat的负载均衡与集群配置