1. 程式人生 > >Java基礎進階Day06

Java基礎進階Day06

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 被終止(例如:車子使用完畢,賣出去了,銷燬了)