多執行緒程式設計學習筆記(一)

2021-04-01 11:31:12 字數 1051 閱讀 3617

多執行緒程式設計筆記(一)

操作執行緒

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...