第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

為什么run方法不能再搶到cpu繼續(xù)第11次輸出日期,而是讓main搶到?

為什么run方法不能再搶到cpu繼續(xù)第11次輸出日期,而是讓main搶到?

倚天杖 2022-05-17 15:15:54
import java.util.Date;public class IMP {public static void main(String[] a){T t=new T();Thread mt=new Thread(t);mt.start();try {Thread.sleep(10000);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}mt.interrupt();}}class T implements Runnable{public void run() {int i=1;while(true){System.out.println(i+" "+new Date());i++;try {Thread.sleep(1000);} catch (InterruptedException e) {return;}}}}在這個例子中,10秒后,main方法的sleep方法結束,按道理這時main和run的線程都在,為什么run方法不能再搶到cpu繼續(xù)第11次輸出日期,而是讓main搶到,執(zhí)行了interrupt方法?
查看完整描述

3 回答

?
狐的傳說

TA貢獻1804條經(jīng)驗 獲得超3個贊

看似run方法每次運行需要1秒,實際上光sleep就需要1秒,再加上循環(huán),輸出。可能一次運行需要1.01秒。
這樣的話,10秒后,run方法仍然在sleep,或許10.1秒的時候才會醒來。
既然run方法在sleep,而mian方法可能在10.01秒時就醒來了,那么就不存在搶的問題了
main方法可能總是先運行。
特別提醒:多線程中各個線程運行時間是不確定的,每次運行可能出現(xiàn)不同結果。
我試驗了一下:main方法如果改為sleep 10008ms的話,就會有11次輸出了,而改為10007ms的話,可能就只有10次輸出。

查看完整回答
反對 回復 2022-05-23
?
子衿沉夜

TA貢獻1828條經(jīng)驗 獲得超3個贊

main方法是主線程,加上你自己定義的線程,就是說這有2個線程,它們是同等地位的,操作在分配資源的時候是同等對待的,所以你要想達到預期目標,你要在程序中實現(xiàn)好了,不能讓操作系統(tǒng)給你分配,不知道我講的是不是很清楚,希望對你有幫助。

查看完整回答
反對 回復 2022-05-23
?
慕絲7291255

TA貢獻1859條經(jīng)驗 獲得超6個贊

線程之間,不要期望操作系統(tǒng)怎么作,這是不靠譜的。這些都應該是程序員自己控制的

查看完整回答
反對 回復 2022-05-23
  • 3 回答
  • 0 關注
  • 107 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號