Java - 多執行緒

Through287發表於2024-08-11

三種實現方式

常用成員方法

1.執行緒name預設“Thread-”+"序號"
2.可以透過重寫構造方法在建立時給執行緒命名

執行緒的生命週期與狀態


同步程式碼塊

  • 格式
synchronized(鎖物件){
  操作共享資料的程式碼
}

1.鎖物件隨機,但只要是有static修飾的唯一物件,一般寫本類class檔案,如MyThread.class
2.必須寫在迴圈內部

同步方法

修飾符 synchronized 返回值型別 方法名(方法引數) {...}
  • 特點1:同步方法是鎖住方法裡面所有的程式碼
  • 特點2:鎖物件不能自己指定
    • 非靜態:this
    • 靜態:當前類的位元組碼檔案物件

lock鎖

生產者和消費者(等待喚醒機制)

主要用wait和notifyAll

阻塞佇列方式實現

  • ArrayBlockingQueue
    底層陣列,有界
  • LinkedBlockingQueue
    底層連結串列,最大為int最大值

put資料時:放不進去,會等著,也叫做阻塞。
take資料時:取出第一個資料,取不到會等著,也叫做阻塞

執行緒池


        //1.獲取執行緒池物件
//        ExecutorService pool1 = Executors.newCachedThreadPool();//無上限
        ExecutorService pool1 = Executors.newFixedThreadPool(3);//有上限

        //2.提交任務
        pool1.submit(new MyRunnable());
        pool1.submit(new MyRunnable());
        pool1.submit(new MyRunnable());
        pool1.submit(new MyRunnable());
        pool1.submit(new MyRunnable());

        //3.銷燬執行緒池(一般不銷燬)
//        pool1.shutdown();

自定義執行緒池



相關文章