亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

java多線程的問題

java多線程的問題

喵喵時光機 2019-04-21 20:21: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 回答

?
慕絲7291255

TA貢獻1859條經驗 獲得超6個贊

問題出在這
for(inti=0;iworkThreads[i].start();
}
當線程start以后,for循環中的threads這個值就變不斷變小,所以你的線程本來就沒執行完。你把threads換成一個final的常量就可以了。
                            
查看完整回答
反對 回復 2019-04-21
?
慕容3067478

TA貢獻1773條經驗 獲得超3個贊

是這個threads的原因,你的主線程main中和線程使用的同一個threads計數,所以導致threads指定40時,不一定會開40個線程,可能出現如下:
前面已開啟了23個線程,且在主線程main的for操作之前完成,那么此時
i=23,threads=23,
所以不會再開線程了,所以導致threads無法等于0,所以無法輸出!
個人推薦使用executor、future來寫線程,通過atomicinteger計數,你可以了解下!
                            
查看完整回答
反對 回復 2019-04-21
  • 2 回答
  • 0 關注
  • 335 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號