一:wait()方法,wait(long timeout)
--->鎖對象調用wait()方法,讓目前線程小a進入等待狀态,阻塞住,并讓出當先線程擁有的鎖。
--->直到其他線程用鎖對象調用notifyAll(),notify()将小a從wait虛拟隊列中将阻塞的線程喚醒。重新争鎖。
--->當别的線程對目前線程小a的對象調用interrupt()方法,則阻塞在wait虛拟隊列的線程抛出InterruptedException異常,打算阻塞。
--->wait(longtimeout)進入鎖對象虛拟隊列的線程在阻塞timeout長時間後,此時已經讓出鎖,自己自動喚醒,再次争搶鎖。
二:notifyAll()notify()方法
--->notifyAll()方法是将進入鎖對象wait隊列裡所有阻塞的線程喚醒,重新争取鎖。
--->notify()方法是将進入所對象wait虛拟隊列裡的阻塞的線程,拿出一個喚醒。
三:sleep(long time)
--->目前線程休眠time長時間,并不釋放鎖。
四:interrupt()
--->線程對象a.interrupt():将a線程的中斷标示位設定成true。
--->線程對象a.isInterrupted():擷取a線程的中斷标示位的值。
--->Thread.interrupted():傳回目前線程的中斷标示位的值,同時不管值是什麼在傳回前将該值設定為false;
--->當線程的中斷标示位為true的時候,線程如果在wait().sleep().join()中阻塞時候,或者即将進入的時候,都會抛出InterruptedException異常,從阻塞狀态中喚醒,并将狀态位設定為false.
五:join()方法
--->線上程x的線程體中用線程a.join()時,則線程x的線程體就會阻塞到a.join()這句代碼這,等待a線程的線程體運作完畢,線程x的線程體的代碼才從a.join()這句代碼開始往後執行。
--->join(long time):代表線程x會阻塞time秒時間,線程a運作正常,time秒後線程x開始從阻塞位置向下執行代碼
--->底層是wait(),不考慮鎖。
六:yeid()方法
--->那個線程調用此方法,那個線程暫時一次讓出CPU排程權。至于能否暫停,實際看cpu是否将時間片分給其他的線程。我主動放棄一次,至于cpu走不走,看cpu的。
七:isAlive()方法
--->線程a.isAlive(),如果線程a的線程體還未執行完,則傳回true,如果線程a的線程還未啟動,活着線程體已經運作完,則傳回false
--->來判斷一個線程是否還活着
八:getstate()方法
--->擷取線程的運作狀态
--->NEW 建立狀态
--->RUNNABLE 運作(可運作)狀态
--->BLOCKED 阻塞狀态
--->TIMED_WAITING 休眠狀态
--->WAITING 等待狀态
--->TERMINATED 終止狀态