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

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

Java多線程方法沒有被執行

Java多線程方法沒有被執行

慕工程0101907 2018-08-17 11:10:46
開啟了一個線程池ExecutorService threadService=Executors.newFixedThreadPool(3);threadService.submit(new task(Queue));threadService.submit(new task(Queue));threadService.submit(new task(Queue));線程池中放入三個相同的線程,三個線程從同一個阻塞隊列拿數據寫到文件中。線程的Run()方法,調用了一個內部方法public run(){  file=Queue.take();  //計數點1:數據取出來(取出來的數據個數)  writetoFile(file);  //計數點2:寫完文件的個數} private writetoFile(){  //計數點3:進入寫函數的個數}現在隊列中放1200個數據,則會發生數據 丟失的情況,因此使用下面的方式對關鍵點進行計數輸出private static int cout=0;發現計數點1與1200吻合。計數點2總比計數點3多1,則說明剩下的次數均沒有進入doSomething()函數,其中一次的數據如下:計數點1:1200   //計數點1的數據很穩定(說明:數據都從阻塞隊列中拿出來了)計數點2:1180  //計數點2,3的數據每次都有浮動,但不是1200,總有丟失的情況,說明寫函數不是每一次都執行了計數點3:1181 可是順序結構的代碼,為什么會平白無故的沒有進入函數呢,就想到了可能是線程的原因 ,還請大佬們指點一下。
查看完整描述

1 回答

?
慕的地8271018

TA貢獻1796條經驗 獲得超4個贊

因FileLock的鎖造成


查看完整回答
反對 回復 2018-09-12
  • 1 回答
  • 0 關注
  • 794 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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