Java基礎進階Day06
阿新 • • 發佈:2018-12-22
Java基礎進階Day06
課程大綱
1、執行緒回顧 -------------------------> 理解 (兩種格式、相關方法)
2、執行緒安全 -------------------------> 重點 (安全問題、三種解決)
3、執行緒狀態 -------------------------> 瞭解 (狀態圖)
第一章 執行緒回顧
1、執行緒建立方式
A、繼承Thread類
B、實現Runnable介面(推薦使用)
格式變化:可以採用匿名內部類方式建立執行緒
2、相關方法
A、構造方法
public Thread () //分配一個新的執行緒物件。
public Thread(String name) //分配一個指定名字的新的執行緒物件。
public Thread(Runnable target) //分配一個帶有指定目標新的執行緒物件。
public Thread(Runnable target,String name) //分配一個帶有指定目標新的執行緒物件並指定名字
B、常用方法
public String getName() //獲取當前執行緒名稱。
public void start() //導致此執行緒開始執行; Java虛擬機器呼叫此執行緒的run方法。
public void run() //此執行緒要執行的任務在此處定義程式碼。
public static void sleep(long millis) //正在執行的執行緒以指定的毫秒數暫停(暫時停止執行)。
public static Thread currentThread() //返回對當前正在執行的執行緒物件的引用
第二章 執行緒安全
1、安全問題
A、問題例項:
售票問題
B、問題特徵:
多個執行緒、共享資料、修改資料(增刪改)彼此影響
2、解決方案
A、同步程式碼塊
a. 格式:
synchronize(鎖物件){ .... }
b. 說明:
非靜態程式碼塊鎖物件是 this
靜態程式碼塊鎖物件是 類名稱. class
B、同步方法
a. 格式:
修飾符 synchronize 返回值型別 方法名稱(引數列表){ ... }
b. 例如:
public synchronize void method(){ .... }
C、鎖物件
a. 格式:
Lock mlock = new ReentrantLock(); //【1】定義成員位置(獲取鎖物件)
mlock.lock(); //【2】在資料變化前加鎖(加鎖)
mlock.unlock(); //【3】在資料變化後解鎖(解鎖)
第三章 執行緒狀態
1、常見狀態(官方六種狀態)
a. New 新建(例如:剛剛買的新車,還未駕駛)
b. Runnable 可執行(例如:駕駛車)
c. Blocked 鎖阻塞(例如: 走在路上,堵車了)
d. Waiting 無限等待(例如: 車子由於違停的情況,被交警拖走了,需要通知取車)
e. Timed Waiting 計時等待(例如: 車子走在路上,等待紅綠燈,紅燈倒計時結束)
f. Teminated 被終止(例如:車子使用完畢,賣出去了,銷燬了)