第一題:乙個單的cpu的機器,如何同時執行多個執行緒?請簡述其原理
因為各個執行緒都是不斷切換輪流執行的,它們每個執行緒輪流占用的時間片很短很短,人是察覺不到的。
第二題:呼叫執行緒物件的start()方法會執行run()方法,為什麼不能直接呼叫()run方法?
run()方法只是乙個類中的普通方法,直接執行和普通的方法沒有設麼兩樣;
start()方法則不同,它首先做了建立執行緒等一系列工作,然後呼叫行的run()方法;
直接呼叫run方法是無法開啟乙個新執行緒的。
start方法其實是在乙個新的作業系統執行緒上面去呼叫run方法。換句話說,直接呼叫run方法而不是呼叫start方法的話,它並不會開啟新的執行緒,而是在呼叫run的當前的執行緒當中執行你的操作。
如果是run,則輸出main。(直接呼叫run其實就是乙個普通的函式呼叫而已,並沒有達到多執行緒的作用)
第三題:執行緒的生命週期中包含幾種狀態,請描述每種狀態的特徵。
新建狀態(new):當執行緒物件對建立後,即進入了新建狀態,如:thread t = new mythread();
就緒狀態(runnable):當呼叫執行緒物件的start()方法(t.start();),執行緒即進入就緒狀態。處於就緒狀態的執行緒,只是說明此執行緒已經做好了準備,隨時等待cpu排程執行,並不是說執行了t.start()此執行緒立即就會執行;
執行狀態(running):當cpu開始排程處於就緒狀態的執行緒時,此時執行緒才得以真正執行,即進入到執行狀態。注:就 緒狀態是進入到執行狀態的唯一入口,也就是說,執行緒要想進入執行狀態執行,首先必須處於就緒狀態中;
死亡狀態(dead):執行緒執行完了或者因異常退出了run()方法,該執行緒結束生命週期。
第四題:
package cn.jbit.thread.ex1;
public class test
}class mythread extends thread
}}
package cn.jbit.thread.ex1;
public class test2
}class mythread2 implements runnable
}}
java物件導向第七章
選擇題 1.a 2.b 3.c 4.b 5.c 6.c 簡答題1.單cpu的計算機中,cpu同時只能執行一條指令,所以在僅有乙個cpu的計算機上不可能同時執行多個任務。而作業系統為了能提高程式的執行效率,將cpu的執行時間分成多個時間片,分配給不同的執行緒,當乙個時間片執行完畢後,該執行緒就可能讓出...
第七章 物件導向 匿名物件
匿名物件 1.當物件對方法僅進行一次呼叫的時候,就可以簡化成匿名物件 new car number 4 new car red red new car run 因為每一次都是new所以在呼叫run方法時候會列印0和null,而前面兩個new出來的物件並賦值給的數 據,在執行完就消失了,因為他們沒有指...
python第七章 python教程(第七章)
字典和集合 字典是python中唯一,乙個對映型別 如何建立乙個字典,如下 dict dict 滲透 網路安全 怎麼理解字典呢?現實生活中的字典可以通過首字母進行查詢要查詢的漢子,python也可以這樣理解,通過 前的元素查詢到冒號後的元素。為什麼說字典是唯一乙個對映型別呢?看圖。對映型別區別與序列...