Java多執行緒

2021-07-10 23:28:20 字數 1227 閱讀 2426

程式(任務)的執行過程。----動態

持有資源(共享記憶體,共享檔案)和執行緒---載體

最小的執行單元

同一程序中有多個執行緒

執行緒共享程序資源

1、管道:管道是一種半雙工的方式,資料只能單向流動,而且只能在具有親緣關係的程序使用。程序的親緣關係是指父子關係。

2、有名管道:是一種半雙工的方式,允許無親緣關係的程序間的通訊

3、訊號量:訊號量是乙個計數器,可以用來控制多個程序對共享資源的訪問,它常作為一種鎖機制,防止某個程序正在訪問共享記憶體時,其他程序訪問該資源。因此,主要作為程序間以及同以程序內不同執行緒間的通訊方式。

4、訊息佇列:是由訊息的鍊錶,存放在核心中並由訊息佇列識別符號標識,訊息佇列克服了訊號傳遞訊息少,管道智慧型承載無格式位元組流以及緩衝區大小受限等缺點

5、訊號:一種比較複雜的通訊方式,用於通知接收程序某個事件已發生

6、共享記憶體:對映一段能被其他程序所訪問的記憶體,這段共享記憶體由乙個程序建立,但多個程序都可以訪問,他往往與其他通訊機制,如訊號量配合使用,來實現程序間的同步和通訊

7、套接字:他用於不同主機間的程序通訊

使用退出標誌:boolean變數  而不是使用stop()方法

interrupt()方法:如果執行緒在呼叫 

object類的 

wait()

wait(long)或 

wait(long, int)方法,或者該類的

join()

join(long)

join(long, int)

sleep(long)或 

sleep(long, int)方法過程中受阻,則其中斷狀態將被清除,它還將收到乙個 

interruptedexception

當多個執行緒同時共享訪問同一資料(記憶體區域)時,每個執行緒都嘗試操作該資料,從而導致資料被破壞(corrupted),這種現象稱為爭用條件。

互斥:同一時間只能有乙個執行緒對臨界資源操作。synchronize

同步:通訊機制 wait() notify() notifyall()

java多執行緒

在網上看到很有意思的問題,摘下來好好看下 在面試的時候被問了乙個多執行緒的問題 回來仔細思考了一下,多執行緒是否真的能提高了效率?我對多執行緒的理解就是 比如挖乙個隧道,有2種開工方法 1 只在山的一頭挖,直至挖到山的另一頭,從而打通隧道,這可以看成是單執行緒 2 在山的兩頭挖,同時開工,最後在山的...

Java 多執行緒

1。thread類和runnable介面 2。主線程 用thread的static thread currentthread 方法獲得 3。通過實現runnable介面建立執行緒 實現runnable介面的run方法。新執行緒在run 方法返回時結束。注意用這種方法建立程序時,在實現runnable...

JAVA 多執行緒

為hashmap的不正確使用所導致。hashmap在多執行緒環境下使用不安全。使用靜態hashmap作為聯絡人資料快取,key為手機號碼.private static maplxrdata new hashmap 多執行緒環境下不同步hashmap可能導致如下問題 1 多執行緒put操作後可能導致g...