之前一位朋友发给我的题目,说是高工的笔试题。本来我的想法是很简单,直接设置优先级就好了,实现之后发现,执行顺序还是乱的。看了网上其他大佬的想法,才发现,我还小哈哈哈,emm,还好我还有时间慢慢学习,慢慢补充自己。
总结一下大概思路就是:T3先执行,在T3的run()方法中,调用t2.join,让t2执行完成后再执行t3;在T2的run()方法中,调用t1.join,让t1执行完成后再让T2执行。
还是很简单的。
package test1227;
public class JoinTest {
/**
* 现有三个线程,怎么确保他们按顺序执行
*/
public static void main(String[] args) {
final Thread t1 = new Thread(new Runnable() {
@Override
public void run() {
System.out.println("t1");
}
});
final Thread t2 = new Thread(new Runnable() {
@Override
public void run() {
try {
t1.join();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("t2");
}
});
Thread t3 = new Thread(new Runnable() {
@Override
public void run() {
try {
t2.join();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("t3");
}
});
t3.start();
t2.start();
t1.start();
}
}
运行结果: