<Java多线程>多个线程前半部分需要做IO等费时间的操作,想要让这些线程前半部分并行,后半部分按顺序执行,该怎么实现?

[复制链接]
查看11 | 回复8 | 2021-1-27 06:32:09 | 显示全部楼层 |阅读模式
多个线程前半部分需要做IO等费时间的操作,想要让这些线程前半部分并行,后半部分按顺序执行,该怎么实现?
比如:
有A,B,C三个线程,需要同时登录到某个网站,登陆是比较耗时,所以想把登录这部分做成并行的
三个线程都登录成功后,按A,B,C的顺序点击不同的三个按钮
以上过程怎么用Java实现?难点在于如何让它们按顺序执行
分 -->
回复

使用道具 举报

千问 | 2021-1-27 06:32:09 | 显示全部楼层
链接参考下
http://blog.csdn.net/u013376508/article/details/50902900
回复

使用道具 举报

千问 | 2021-1-27 06:32:09 | 显示全部楼层
可以用线程计数器
回复

使用道具 举报

千问 | 2021-1-27 06:32:09 | 显示全部楼层
你的问题是不是,ABC登录并行执行,但是ABC点击登录按钮是存在先手顺序的,你需要保证ABC登录完成之后,后续处理的流程依然按照当初点击登录按钮的顺序,继续执行?
回复

使用道具 举报

千问 | 2021-1-27 06:32:09 | 显示全部楼层
引用2楼l359122505的回复:可以用线程计数器
详细思路呢
回复

使用道具 举报

千问 | 2021-1-27 06:32:09 | 显示全部楼层
引用1楼zc881124的回复:链接参考下
http://blog.csdn.net/u013376508/article/details/50902900

如果线程个数很多的话,这样写是不是很麻烦了
回复

使用道具 举报

千问 | 2021-1-27 06:32:09 | 显示全部楼层
引用3楼w_shi的回复:你的问题是不是,ABC登录并行执行,但是ABC点击登录按钮是存在先手顺序的,你需要保证ABC登录完成之后,后续处理的流程依然按照当初点击登录按钮的顺序,继续执行?
不是,ABC点击登录按钮没有先后顺序,但是后续的处理有先后顺序
回复

使用道具 举报

千问 | 2021-1-27 06:32:09 | 显示全部楼层
publicclassLoginTest{
privatebooleanlogin(StringloginUser){
try{
Thread.sleep(1000);
}catch(InterruptedExceptione){
e.printStackTrace();
}
System.out.println("loginUser=["+loginUser+"]");
returntrue;
}
privateStringgetUserList(StringloginUser){
return"getUserList:"+loginUser;
}
publicstaticvoidmain(String[]args){
String[]strarr={"userA","userB","userC"};
LoginTestloginTest=newLoginTest();
//主线程维护请求的先后顺讯
ThreadLocalthreadLocal=newThreadLocal();
threadLocal.set(strarr);
//登录并发执行
CountDownLatchcountDownLatch=newCountDownLatch(strarr.length);
for(inti=0;i引用4楼xinxianquan222222的回复:Quote: 引用2楼l359122505的回复:
可以用线程计数器

详细思路呢

楼上给了代码了,可以确保在执行A、B、C之前,三个用户的登陆操作已经完成,后边就是并发顺序执行了啊
A();
B();
C();
回复

使用道具 举报

千问 | 2021-1-27 06:32:09 | 显示全部楼层
为什么都不给分啊?难道讲的不对,或不详细吗?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行