多執行緒,高併發初步(一 執行緒的建立方式)

2021-09-16 14:17:48 字數 1525 閱讀 2655

常見的兩種執行緒建立方式:繼承thread類和實現runnable介面

具體例子:這裡說明一點比較常用繼承來實現介面,以為比較簡單化。

package test;

import org.junit.test;

public class testthread catch (interruptedexception e) }}

//1,繼承(extendsthread)

class mythread extends thread }}

//實現(implements runnable)

class mythread1 implements runnable

}}

結果輸出:

當前執行緒名:thread[main,5,main];3

當前執行緒名:thread[main,5,main];2

當前執行緒名:thread[main,5,main];1

當前執行緒名:thread[main,5,main];3

當前執行緒名:thread[main,5,main];2

當前執行緒名:thread[main,5,main];1

當前執行緒名:thread[thread-2,5,main];4

當前執行緒名:thread[thread-2,5,main];3

當前執行緒名:thread[thread-2,5,main];2

當前執行緒名:thread[thread-2,5,main];1

當前執行緒名:thread[thread-3,5,main];4

當前執行緒名:thread[thread-3,5,main];3

當前執行緒名:thread[thread-3,5,main];2

當前執行緒名:thread[thread-3,5,main];1

上面的例子如果你放開try…catch,並去掉執行緒沉睡,這將會體現出多執行緒的不安全性。

多次的執行結果會不同,比如:很顯然少了乙個「4」

當前執行緒名:thread[main,5,main];3

當前執行緒名:thread[main,5,main];2

當前執行緒名:thread[main,5,main];1

當前執行緒名:thread[main,5,main];3

當前執行緒名:thread[main,5,main];2

當前執行緒名:thread[main,5,main];1

當前執行緒名:thread[thread-2,5,main];4

當前執行緒名:thread[thread-2,5,main];3

當前執行緒名:thread[thread-2,5,main];2

當前執行緒名:thread[thread-3,5,main];4

當前執行緒名:thread[thread-2,5,main];1

當前執行緒名:thread[thread-3,5,main];3

當前執行緒名:thread[thread-3,5,main];2

當前執行緒名:thread[thread-3,5,main];1

多執行緒與高併發(一) 執行緒的概念 鎖

執行緒的歷史是非同步對於cpu效能壓榨的歷史。多程序批處理 多程序並行處理 多執行緒纖程 協程 程序執行緒 底層角度 繼承thread,重寫run方法。實現runnable介面,重寫run方法。使用lambda 第二種方法的變形 使用執行緒池啟動執行緒 本質也是前兩種方式之一 狀態是由jvm管理,管...

多執行緒基礎(一)執行緒建立

繼承thread類 自定義乙個類,繼承thread類 重寫run方法,run方法中用於定義當前執行緒的執行邏輯。建立執行緒類的物件 開啟執行緒 thread類中start 方法啟動執行緒 此案例展示第一種建立執行緒之方法 繼承thread類 說明 1.若 static 修飾 i,則共享i 關於thr...

多執行緒高併發

修飾靜態方法鎖的是class,非靜態鎖方法鎖的是this,只有拿到這個物件才可以繼續執行 synchronized是可重入鎖 執行緒1的方法1呼叫執行緒2的方法2,判斷是同一把鎖,在同乙個執行緒,可以呼叫。synchronized的鎖公升級 hotsport 鎖公升級過程 保證執行緒可見性 mesi...