選擇題
1.a 2.b 3.c 4.b 5.c 6.c
簡答題1.單cpu的計算機中,cpu同時只能執行一條指令,所以在僅有乙個cpu的計算機上不可能同時執行多個任務。而作業系統為了能提高程式的執行效率,將cpu的執行時間分成多個時間片,分配給不同的執行緒,當乙個時間片執行完畢後,該執行緒就可能讓出cpu使用許可權交付給下乙個時間片的其他執行緒執行。
2.執行緒例項呼叫start()方法和呼叫run()方法有著天壤之別,前者是呼叫例項方法,只有主線程執行,只有一條執行路徑,後者是啟動執行緒。
3.任何執行緒一般都具有5種狀態,即建立、就緒、執行、阻塞、終止狀態。
1>建立狀態
在程式中用構造方法建立了乙個執行緒物件後,新的執行緒物件就處於建立狀態,此時,它已經獲取了相應的資源,但還沒有處於可執行狀態,這時可以通過thread類的方法來設定執行緒物件的屬性,如設定執行緒名(setname())、設定執行緒優先順序(setpriority())等。
2>就緒狀態
執行緒建立之後,就可以通過呼叫start()方法啟動執行緒,即進入就緒狀態。
3>執行狀態
當就緒狀態的執行緒獲得cpu資源時,即可轉入執行狀態,執行的run()方法。對於只有乙個cpu的機器而言,任何時刻只能有乙個處於執行狀態的執行緒占用cpu,即獲得cpu資源。
4>阻塞狀態
乙個正在執行的執行緒因某種原因不能繼承執行時,進入阻塞狀態。阻塞狀態是一種「不可執行」的狀態,而處於這種狀態的執行緒在得到乙個特定的事件之後會轉回可執行狀態。
可能使執行緒暫停執行的條件:
(1)執行緒優先順序比較低,因此它不能獲得cpu資源。
(2)使用sleep()方法使執行緒休眠。
(3)通過呼叫wait()方法,使執行緒等待。
(4)通過呼叫yield()方法,執行緒顯式出讓cpu控制權。
(5)執行緒由於等待乙個檔案i/o事件被阻塞。
5>死亡狀態
乙個執行緒的run()方法執行完畢,執行緒則進入死亡狀態。處於死亡狀態的執行緒不具有繼承執行的能力。
public class new
}class mythread extends thread
}}
public class new2
}class mythread2 implements runnable
}}
public class account
public void withdraw(int amount)
}
public class testaccount implements runnable
} }private synchronized void makewithdrawal(int amt) catch (interruptedexception ex)
acct.withdraw(amt);
system.out.println(thread.currentthread().getname() + " 完成取款");
} else
}}
public class testwithdrawal
}
練習
public class curethread implements runnable catch (interruptedexception e)
} }}
public class test catch (interruptedexception e1)
if(i==9) catch (interruptedexception e)
}} }
}
練習
public class test
}class mythread implements runnable
}}
練習
public class site implements runnable
} } public synchronized boolean sale()
num++;
count--;
try catch (interruptedexception e)
system.out.println(thread.currentthread().getname() + "搶到第" + num
+ "張票,剩餘" + count + "張票!");
if(thread.currentthread().getname().equals("黃牛黨"))
return true;
}}
public class test
}
java物件導向第七章
第一題 乙個單的cpu的機器,如何同時執行多個執行緒?請簡述其原理 因為各個執行緒都是不斷切換輪流執行的,它們每個執行緒輪流占用的時間片很短很短,人是察覺不到的。第二題 呼叫執行緒物件的start 方法會執行run 方法,為什麼不能直接呼叫 run方法?run 方法只是乙個類中的普通方法,直接執行和...
第七章 物件導向 匿名物件
匿名物件 1.當物件對方法僅進行一次呼叫的時候,就可以簡化成匿名物件 new car number 4 new car red red new car run 因為每一次都是new所以在呼叫run方法時候會列印0和null,而前面兩個new出來的物件並賦值給的數 據,在執行完就消失了,因為他們沒有指...
python第七章 python教程(第七章)
字典和集合 字典是python中唯一,乙個對映型別 如何建立乙個字典,如下 dict dict 滲透 網路安全 怎麼理解字典呢?現實生活中的字典可以通過首字母進行查詢要查詢的漢子,python也可以這樣理解,通過 前的元素查詢到冒號後的元素。為什麼說字典是唯一乙個對映型別呢?看圖。對映型別區別與序列...