題目:實現乙個runnable。在run()內部列印乙個訊息,然後呼叫yield()。重複這個操作三次,然後從run中返回。在構造器中放置一條啟動訊息,並且放置一條在任務終止時的關閉訊息。使用執行緒建立大量的這種任務並驅動他們。
package test;
public class test }}
class runabletest implements runnable
@override
public void run()
system.out.println(stopstr); }
}
結果是:
#1 start!
#2 start!
#3 start!
#1 loop1
#2 loop1
#2 loop2
#1 loop2
#1 loop3
#1 stop!
#2 loop3
#2 stop!
#4 start!
#3 loop1
#3 loop2
#5 start!
#4 loop1
#3 loop3
#4 loop2
#3 stop!
#4 loop3
#4 stop!
#6 start!
#7 start!
#5 loop1
#5 loop2
#5 loop3
#5 stop!
#7 loop1
#6 loop1
#8 start!
#6 loop2
#7 loop2
#7 loop3
#6 loop3
#6 stop!
#7 stop!
#9 start!
#8 loop1
#8 loop2
#8 loop3
#8 stop!
#10 start!
#9 loop1
#9 loop2
#9 loop3
#9 stop!
#10 loop1
#10 loop2
#10 loop3
#10 stop!
如果把yield去掉的話結果是:
#1 start!
#2 start!
#3 start!
#1 loop1
#1 loop2
#1 loop3
#1 stop!
#4 start!
#2 loop1
#5 start!
#2 loop2
#2 loop3
#2 stop!
#5 loop1
#5 loop2
#5 loop3
#5 stop!
#3 loop1
#3 loop2
#3 loop3
#3 stop!
#4 loop1
#4 loop2
#4 loop3
#4 stop!
#6 start!
#7 start!
#8 start!
#7 loop1
#7 loop2
#7 loop3
#7 stop!
#6 loop1
#6 loop2
#6 loop3
#6 stop!
#9 start!
#10 start!
#9 loop1
#9 loop2
#9 loop3
#9 stop!
#10 loop1
#10 loop2
#10 loop3
#10 stop!
#8 loop1
#8 loop2
#8 loop3
#8 stop!
結論:我們發現把yield去掉之後每個執行緒的三次迴圈基本都一下子輸出了,因為任務比較簡單可以在乙個時間片內完成,所以在中途沒有切換上下文。而增加了yield之後,執行完一次迴圈之後,該執行緒有很大機率被切換掉。 第3章練習題
1 在這一章中,所謂的過濾是什麼意思?有什麼意義?過濾是指下層驅動程式和上層軟體之間的過濾層,在上下層進行資料交換時進行掃瞄過濾的過程 2 何為核心物件?我們已經接觸到了哪幾種核心物件?核心物件是核心中的一塊記憶體,是一種資料結構,負責維護該物件的資訊。裝置物件,驅動物件,進執行緒物件 3 何為裝置...
第5章 練習題
5.1 空語句就是乙個單獨的分號 在程式的某個地方語法上需要一條語句但是邏輯上不需要,此時應該使用空語句 5.2用花括號括起來的語句序列,在程式的某個地方語法上需要一條語句,但邏輯上需要多條語句時用 5.3 p5 3.cpp include int main std cout sum of 1 to...
第2章 練習題
2.9 a 不合法,變數要在輸入前定義 b 不合法,存在丟失資訊的風險 c 不合法,wage未定義 d 會被轉換為整型 2.10 global str 空字串 global int 0 local int 垃圾值 local str 垃圾值 2.11 a 宣告 定義 b 宣告 定義 c 宣告 2.1...