三種實現方式
常用成員方法
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();
自定義執行緒池