java如何在多线程执行完后才执行其他任务

for(inti=0;i<fileList.size();i++){finalStringsrcFile=srcDir+"/"+fileList.get(i).getNa... for(int i=0;i<fileList.size();i++){
final String srcFile=srcDir+"/"+fileList.get(i).getName();
final String dstFile=dstDir+"/"+fileList.get(i).getName();
Thread thread = new Thread(new Runnable() {
public void run() {
copyTimer(srcFile,dstFile);
}
});
}

//开始执行解压操作
List<File> descFileList = scanFiles(dstDir);
System.out.println("++++++" + descFileList);
unZipFile(descFileList, dstDir, unZip);
如上代码显示,让他在for循环之后才执行下面的unZipFile方法
展开
 我来答
wangcongt8
2015-06-15 · 超过46用户采纳过TA的回答
知道小有建树答主
回答量:97
采纳率:0%
帮助的人:70.7万
展开全部
java.util.concurrent.CountDownLatch 这个类可以实现你所要的功能

例如:CountDownLatch latch = new CountDownLatch(5) //声明计数器为5个
Thread t = new Thread() {
public void run() {
try {
//TODO 你的应用
} catch (Exception e) {
//TODO 异常处理
}
finally {
latch.countDown(); //这句是关键
System.out.println("ok"); //5个线程都跑完后输出
}
}
};
t.start();
然后让以上操作循环五次(就是说同时开5个线程),那么这个"ok"就会在等到这5个线程都ok后才会被输出一次。
冲进微软
2012-12-24 · TA获得超过183个赞
知道小有建树答主
回答量:195
采纳率:0%
帮助的人:132万
展开全部
给点提示
可以设置一个map对象
key为fileName,value 为boolean 结束了就设置为true,没结束就设置为false

然后while循环
直到map中所有的value都为true时才break;
执行你所说的语句
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友90a9f71
2012-12-24 · TA获得超过115个赞
知道答主
回答量:105
采纳率:0%
帮助的人:57.5万
展开全部
通过标识符判断循环是否结束,然后再执行操作
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
屠天沃思彤
2019-11-22 · TA获得超过1073个赞
知道小有建树答主
回答量:1732
采纳率:100%
帮助的人:7.9万
展开全部
设置一个计数器,每个线程执行完后计数器加一然后查看计数器是否已满(任务都完成),没有的话就阻塞,是的话就唤醒其他所有线程,大家一起来执行下一次任务。要注意公用的计数器的线程安全!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式