为了账号安全,请及时绑定邮箱和手机立即绑定

java多线程的问题

java多线程的问题

慕后森 2019-04-19 15:59:39
仿照网上写了一个方法统计n个线程同时调一个方法,都执行完需要多长时间,发现一个奇怪的问题packageme.ele.coffe.hr.stress.test;publicclasstest{privatestaticIntegererror=0;privatestaticIntegerthreads=40;privatestaticLongstartTime;privatestaticLongendTime;publicstaticvoidmain(String[]args){System.out.println("begintesting");System.out.println("线程数"+threads);WorkThread[]workThreads=newWorkThread[threads];for(inti=0;i
查看完整描述

2 回答

?
慕标5832272

TA贡献1966条经验 获得超4个赞

问题出在这
for(inti=0;iworkThreads[i].start();
}
当线程start以后,for循环中的threads这个值就变不断变小,所以你的线程本来就没执行完。你把threads换成一个final的常量就可以了。
                            
查看完整回答
反对 回复 2019-04-19
?
杨魅力

TA贡献1811条经验 获得超6个赞

是这个threads的原因,你的主线程main中和线程使用的同一个threads计数,所以导致threads指定40时,不一定会开40个线程,可能出现如下:
前面已开启了23个线程,且在主线程main的for操作之前完成,那么此时
i=23,threads=23,
所以不会再开线程了,所以导致threads无法等于0,所以无法输出!
个人推荐使用executor、future来写线程,通过atomicinteger计数,你可以了解下!
                            
查看完整回答
反对 回复 2019-04-19
  • 2 回答
  • 0 关注
  • 276 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信