多執行緒基本操作

2021-10-07 23:44:05 字數 1498 閱讀 8592

1)繼承thread類建立執行緒

2)實現runnable介面建立執行緒

3)使用callable和future建立執行緒

1.實現callable介面,重寫call()方法,建立該實現類的例項

2.使用futuretask類來包裝callable物件,該futuretask物件封裝了callable物件的call()方法的返回值

3.使用futuretask物件作為thread物件的target建立並啟動執行緒(因為futuretask實現了runnable介面)

4)使用執行緒池例如用executor框架

1.建立執行緒池,建立executorservice

2.使用service中的execute方法啟動執行緒

3.關閉服務(service.shutdown)

3. 與鎖定的對比

4. synchronized和lock的區別

一:出身不同

二:使用方式不同

sync是隱式鎖。lock是顯示鎖

所謂的顯示和隱式就是在使用的時候,使用者要不要手動寫**去獲取鎖和釋放鎖的操作。

三:等待是否可中斷

sync是不可中斷的。除非丟擲異常或者正常執行完成

lock可以中斷的。中斷方式:

1:呼叫設定超時方法trylock(long timeout ,timeunit unit)

2:呼叫lockinterruptibly()放到**塊中,然後呼叫interrupt()方法可以中斷

四:加鎖的時候是否可以公平

sync;非公平鎖

lock:兩者都可以的。預設是非公平鎖。在其構造方法的時候可以傳入boolean值(true:公平鎖 false:非公平鎖)

五:鎖繫結多個條件來condition

sync:沒有。要麼隨機喚醒乙個執行緒;要麼是喚醒所有等待的執行緒。

lock:用來實現分組喚醒需要喚醒的執行緒,可以精確的喚醒,而不是像sync那樣,不能精確喚醒執行緒。

六:死等

.用synchronized關鍵字的兩個執行緒1和執行緒2,如果當前執行緒1獲得鎖,執行緒2執行緒等待。如果執行緒1阻塞,執行緒2則會一直等待下去,而lock鎖就不一定會等待下去,如果嘗試獲取不到鎖,執行緒可以不用一直等待就結束了;

七:從使用鎖的方式比較

多執行緒基本操作

在多執行緒中經常用到的關鍵字是lock。lock 關鍵字可確保當乙個執行緒位於 的臨界區時,另乙個執行緒不會進入該臨界區 所謂的臨界點指的是 當多個執行緒訪問乙個更改物件狀態的方法是,因為不知道到底要修改那個狀態,將產生不可預知的資料損壞 所以關於多執行緒的程式設計中找到程式的臨界區是很重要的事情。...

JavaSE 多執行緒基本操作一

在多執行緒操作中,有一些常用的方法可以直接供我們使用,這篇部落格主要總結一下這些基本操作。1 執行緒的命名與取得 因為多執行緒的執行狀態我們無法確定,所以在對多執行緒的操作必須有乙個明確標識出線程物件的資訊,這個資訊往往通過名稱來描述。在thread類中,提供了一系列的相關方法。方法名稱 型別描述 ...

linux多執行緒程式設計基本操作(2)

linux c多執行緒總結 1 關於執行緒和程序 a 使用多執行緒的理由之一是和程序相比,它是一種非常 節儉 的多工操作方式。我們知道,在linux系統下,啟動乙個新的程序必須分配給 它獨立的位址空間,建立眾多的資料表來維護它的 段 堆疊段和資料段,這是一種 昂貴 的多工工作方式。而執行於乙個程序中...