課程
/后端開發
/Java
/深入淺出Java多線程
為什么我運行以后是 男演員第0次 男演員第1次 男演員第2次 男演員第3次 男演員第4次 女演員第0次 男演員第5次 女演員第1次 女演員第2次 男演員第6次 是電腦配置(雙核之類的區別)導致的線程運行不一樣嗎?
2016-03-24
源自:深入淺出Java多線程 2-3
正在回答
線程的原理是,把CPU的一個核心,在時間上分成很多極短的時間片,每個時間片處理一個線程的一部分,當一個時間片完成后,下一個時間片可能選擇任何一個有條件運行的線程來執行。
例如,有a,b兩個線程,各自有10個語句,記為a1-a10和b1-b10,且都沒有阻塞
假如我們執行
a.start(); b.start();
因為a先start,通常會先執行a1,當a1執行完,且b也已經start過后,下一個可能執行a2,也可能執行b1,具體執行誰由程序本身根據CPU狀況決定,程序員無法指定。因此像是視頻中的程序,哪怕是在同一臺電腦上,每次運行結果也可能不同。
因為線程運行需要爭用CPU,因此每次運行的結果都有可能不同,同一臺電腦尚且如此,不同的電腦,不同的CPU就更不用說了
舉報
帶你一起深入淺出多線程,掌握基礎,展望進階路線
2 回答線程并不能交替運行
3 回答軍隊線程1 和 農民軍線程2 他們兩都運行了多少次呢???
1 回答線程wait的執行順序
1 回答當一個線程run()啟動之后,是不是至少運行一次?
2 回答請教一下呢,run方法調用和線程運行順序的問題
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2016-04-09
線程的原理是,把CPU的一個核心,在時間上分成很多極短的時間片,每個時間片處理一個線程的一部分,當一個時間片完成后,下一個時間片可能選擇任何一個有條件運行的線程來執行。
例如,有a,b兩個線程,各自有10個語句,記為a1-a10和b1-b10,且都沒有阻塞
假如我們執行
因為a先start,通常會先執行a1,當a1執行完,且b也已經start過后,下一個可能執行a2,也可能執行b1,具體執行誰由程序本身根據CPU狀況決定,程序員無法指定。因此像是視頻中的程序,哪怕是在同一臺電腦上,每次運行結果也可能不同。
2016-03-24
因為線程運行需要爭用CPU,因此每次運行的結果都有可能不同,同一臺電腦尚且如此,不同的電腦,不同的CPU就更不用說了