作者PTTCATKING (怀念美国猫王)
看板java
标题[问题] 想请问关於JOIN的写法
时间Mon Nov 10 14:00:17 2014
现在一个流程是这样
Thread A 执行完成之後,分成两条Thread,同时执行 B跟 C
然後C这条线执行完後,会再执行D
等到B这条线跟 C&D这条线两条都跑完後,才开始执行E
如果像是我以下这种写法,算是 B跟 CD跑完之後,才开始跑E吗
那一开始起头的 A 我要怎麽写呢
public void execute(TaskExecutionContext executor) throws RuntimeException {
System.out.println("Thread E ");
Thread threadB = new Thread(new Runnable() {
public void run() {
try {
System.out.println("Thread B 开始..");
for(int i = 0; i < 5; i++) {
Thread.sleep(1000);
System.out.println("Thread B 执行..");
}
System.out.println("Thread B 即将结束..");
}
catch(InterruptedException e) {
e.printStackTrace();
}
}
});
Thread threadC = new Thread(new Runnable() {
public void run() {
try {
System.out.println("Thread C 开始..");
for(int i = 0; i < 5; i++) {
Thread.sleep(1000);
System.out.println("Thread C 执行..");
}
System.out.println("Thread C 即将结束..");
System.out.println("Thread D 开始..");
for(int i = 0; i < 5; i++) {
Thread.sleep(1000);
System.out.println("Thread D 执行..");
}
System.out.println("Thread D 即将结束..");
}
catch(InterruptedException e) {
e.printStackTrace();
}
}
});
threadB.start();
threadC.start();
try {
// Thread B 加入 Thread A
threadB.join();
threadC.join();
}
catch(InterruptedException e) {
e.printStackTrace();
}
System.out.println("Thread E 执行");
for (int i = 1; i <= 30; i++) {
System.out.println("Task 1 says: " + i + executor);
executor.setStatusMessage("第一个任务执行到第 " + i + " 个");
executor.setCompleteness(i / 30D);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
;
}
executor.pauseIfRequested();
if (executor.isStopped()) {
break;
}
}
}
格式可能有点跑掉,这是 让E等待 B跟CD的写法
怎麽写成从A开始呢
因为 E 就是主程序了说..
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 111.81.121.136
※ 文章网址: http://webptt.com/cn.aspx?n=bbs/java/M.1415599219.A.31C.html
※ 编辑: PTTCATKING (111.81.121.136), 11/10/2014 14:11:25
※ 编辑: PTTCATKING (111.81.121.136), 11/10/2014 14:12:07
※ 编辑: PTTCATKING (111.81.121.136), 11/10/2014 14:32:28
1F:→ swpoker: concurrent不用吗~不要再用thread了拉 11/10 15:27
2F:推 nOhiTmE: 如果真的要abcde的话,就用两个countdown latch。cd共用 11/10 20:50
3F:→ nOhiTmE: 一个,bde共用一个。 11/10 20:50
4F:→ PTTCATKING: 感谢楼上两位,研究楼上们的推荐,很顺利的完成了 11/11 15:26
5F:→ PTTCATKING: 感谢高手的意见提供 11/11 15:27