執行緒一些基本知識
1.在本程式的執行中,可以看到主線程和子執行緒是輪流執行的,可能是因為建立的時候優先順序系統
,cpu輪流給時間片的關係吧。
2。3.解決主子執行緒的優先的關係,目前了解的方法是讓主線程sleep一段時間,等待子執行緒完成工作
4。通過**別的例子在進行實際的應用中,也是主線程只進行一些基本的開始和結束的操作,具
體的操作都是由子執行緒來完成。
5.對於子執行緒的使用,在建立子執行緒後,都會馬上用closehandle()進行對子執行緒的關閉,其實這
只是將執行緒的usage count的計數減1,而當執行緒在建立時,usage count的值是2,只有在usage
count為0的時候,執行緒才能停止執行。
6.對於「暫停計數器」的理解:暫停計數器suspend count在建立時為1,也就是說在建立初是先暫
停的,這個暫停時間是用來進行執行緒的初始化。【這個也就可以解釋,為什麼我用書本的例子看到
總是先執行主線程一段時間再執行子執行緒(子執行緒設定的是建立後立即執行)。】在子執行緒的初始
化(初始化是由誰來進行的呢?)完成後,如果在建立執行緒時設定是建立後立即執行也就是引數為
0那麼此時執行緒的暫停計數將被遞減為0. 同理如果在建立執行緒的時候,引數設定為
create_suspened ,那此時的執行緒就會一直處於暫停狀態,知道在其他的活動執行緒中用
resumethread(執行緒控制代碼)來啟用。
7.提到resumethread()就必須了解其實執行一次resumethread就是將該執行緒的suspendcount減1,
這是個累加量,當然對應的操作就是呼叫suspendthread(執行緒控制代碼)來使suspendcount加1.最後再
次重申,只有在suspendcount為0時,執行緒才能執行。
程式的**如下:
程式執行中遇到的乙個疑問已經自己的猜測:
不知各位看官如何理解?
多執行緒 初總結
首先是先了解 class mythread extends thread override public void run public class test1 class mythread1 implements runnable override public void run public c...
1 初遇貪心
以題著手,先上題。題意大致為,n堆果子,每一次合併兩堆果子為一堆,消耗的體力等於兩堆果子的重量之和。直到經過 n 1 次合併之後,就只剩下一堆了,要求消耗體力最少。例如有 3堆果子,數目依次為 1,2,9。可以先將 1 2堆合併,新堆數目為3,耗費體力為3 接著,將新堆與原先的第三堆合併,又得到新的...
概率初涉(1)
以前沒有認真學習概率論,雖然剛開始的時候挺感興趣的,但是後來就沒有再繼續堅持了,現在後悔了,概率論與數理統計真的很有用。為什麼我們要學概率?或者說什麼是概率,為什麼會有這門學科?其實概率只是因為我們對這個世界認知太少,所以為了能夠方便的認知社會,才進行研究的學科。舉個例子,考試的時候,有一道選擇題我...