多執行緒程式設計筆記(一)
操作執行緒
1、操作例項
using system;
using system.threading;
執行threadmethod的執行緒的**為:2
主線程結束
在threadmethod中,啟動子執行緒後,主線程休眠0.5等待子執行緒執行,子執行緒執行threadmethod的第1句**後,休眠1秒等待主線程執行。此當主線程休眠並呼叫abort方法結束子執行緒的時候,子執行緒仍處於休眠狀態。著時候子執行緒被打斷,並結束。所以threadmethod的最後沒機會執行。
若將threadmethod進行異常處理,
static public void threadmethod()
",thread.currentthread.gethashcode().tostring());
thread.sleep(1000);
}catch(exception e)
",e.tostring());
}finally
console.writeline("threadmethod執行緒結束"); //這句在呼叫abort是不會執行到的;interrupt會執行到的
}執行緒體就會捕獲到了乙個threadabortexception異常,而且finally塊也執行了。
如果在執行非託管**時執行緒忽略 threadabortexception,則當執行緒開始執行託管**時,系統將再次引發 threadabortexception。
b、interrupt
該方法打斷乙個處於waitsleepjoin狀態的線城。
在當前的執行緒呼叫該方法後產生threadinterruptedexception異常。與abort結束執行緒不同,呼叫abort結束執行緒的方法將使該執行緒執行完finally語句就結束,而呼叫interrupt方法則允許執行緒執行完整個執行緒體後結束。
如果執行緒體不採取異常處理措施,則執行緒在被打斷的時候立刻結束。
如果執行緒不處於waitsleepjoin狀態,則執行緒下次處於waitsleepjoin時被打斷。
摘自《.***核心技術--原理與架構》
多執行緒程式設計學習筆記 執行緒池(一)
接上文 多執行緒程式設計學習筆記 執行緒同步 一 接上文 多執行緒程式設計學習筆記 執行緒同步 二 接上文 多執行緒程式設計學習筆記 執行緒同步 三 建立多執行緒操作是非常昂貴的,所以每個執行時間非常短的操作,建立多執行緒進行操作,可能並不能提高效率,反而降低了效率。執行緒池,就是我們先分配一些資源...
多執行緒程式設計學習筆記 執行緒同步(一)
中的示例 十,一樣如果多執行緒使用共享變數,就會涉及到乙個執行緒同步的問題。那如何解決呢?方法有三 1 重構程式,移除多執行緒的共享變數,讓乙個執行緒只訪問乙個自有變數 2 使用原子操作,乙個操作只占用乙個量子時間,一次完成,只有當當前操作完成之後,其他執行緒才能進行操作。這樣可以避免使用獨佔鎖,避...
多執行緒程式設計學習筆記(六)
多執行緒程式設計學習筆記 六 執行緒區域性儲存 tls 存放區域性儲存步驟 1 申請資料槽 localdatastoreslot slot thread.getnameddataslot para 如果不存在名為para的資料槽,將分配乙個所有執行緒均可用的para資料槽 2 往資料槽存放資料 my...