java多執行緒

2021-08-22 06:11:31 字數 1474 閱讀 1651

一、概念

二、多執行緒的建立

1、繼承thread,重寫run方法(執行緒體)

2、使用執行緒:建立執行緒子類物件,物件呼叫start(),執行緒啟動。(呼叫run(),只是普通方法的呼叫,並不是啟動執行緒;呼叫start(),交給cup分配時間片去處理,內部會自己呼叫run())

3、靜態**設計模式:

真實角色(真實類):

**角色(**類):持有真實角色的引用(將真實類的引用作為**類的成員變數)

二者實現相同的介面(兩個類實現相同的介面):

4、使用runnable建立執行緒:(推薦:避免單繼承的侷限,便於共享資源)

類實現runnable介面+重寫run()     --》真實角色

啟動多執行緒,使用靜態**(建立真實角色,建立**角色+真實角色的引用,呼叫start()方法啟動執行緒)

5、通過callable介面實現多執行緒

優點:相對於runnable介面,任務執行後可以返回值,可以丟擲異常。

思路:(1)建立callable實現類+重寫call方法

(2)借助執行排程服務executorservice,獲得future物件

executorservice ser = executors.newfixedthreadpool(2); //建立兩個執行緒

future result = ser.submit(實現類物件);

(3)獲得值result.get();

(4)停止服務ser.shutdownnow();

三、執行緒的狀態:

1、五種狀態

(1)新生狀態

(2)就緒狀態

(3)執行狀態

(4)阻塞狀態

(5)死亡狀態

2、停止執行緒

(1)自然終止:執行緒體正常執行完畢

(2)外部干涉:

1)執行緒類中定義執行緒體使用的標識

2)執行緒體使用該標識

3)提供對外的方法改變該標識

4)外部根據條件呼叫該方法即可

3、阻塞

(1)join合併執行緒(寫在那個執行緒裡面就阻塞那個執行緒)

(2)yield:暫停自己的執行緒(寫在那個執行緒裡面就阻塞那個執行緒)

(3)sleep:休眠,不釋放鎖

1)與時間相關,倒計時

2)模擬網路延時

四、執行緒同步

同步:併發,多個執行緒訪問同乙份資源,確保資源安全  --》執行緒安全

同步塊     synchronized(引用型別|this|類.class)

3.同步方法

五、死鎖

生產者消費者模式(訊號燈法)

使用wait(),notify()/nitifyall()與synchronized一起使用

六、任務排程

timer()

schedule(timertask task,date time)

schedule(timertask task,date firsttime,long period)

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