深入淺出多線程——線程基礎篇
-
概述
多線程是java編程中非常重要的一塊,在多核CPU時代,多線程是最直接提高程序執行效率的途徑。所以學好多線程對我們極其重要。
- Java多線程的基本應用
創建多線程有兩種方式:
1,繼承Thread類
/** * @author itunic.com * 繼承Thread實現多線程 * @see Thread */ public class RunThread extends Thread { /** * 線程執行內容。 */ @Override public void run() { System.out.println("Thread execution content!"); } public static void main(String[] args) { //創建線程對象 RunThread rt = new RunThread(); //啟動rt線程 rt.start(); } }
2,實現Runnable接口
/** * @author itunic.com * Runnable接口實現多線程 * @see Runnable */ public class RunnableThread implementsRunnable { /** * 線程執行內容。 */ @Override public void run() { System.out.println("Thread execution content!"); } public static void main(String[] args) { //創建線程對象 Thread t = new Thread(new RunnableThread()); //啟動t線程 t.start(); }
- Java多線程的6種狀態
根據官方定義,線程狀態分為:NEW、RUNNABLE、BLOCKED、WAITING、TIMED_WAITING、TERMINATED六種狀態。
NEW: 線程尚未啟動處於該狀態。也就是說 new Thread 之後,調用start方法之前所處於的狀態。
RUNNABLE: 線程處於JVM運行狀態,但可能正等待操作系統的執行調度。
BLOCKED: 線程阻塞狀態,導致該狀態的原因通常是它處於臨界資源池,等待一個“鎖”。
WAITING:通常是指線程擁有對象鎖後進入相應的區域,調用鎖對象的wait()方法後產生的一種結果。除此之外,還有變相的實現方式:Thread.join()、LockSupport.park()等。
TIMED_WAITING:與WAITING狀態類似,不同的是TIMED_WAITING擁有超時設置,當超過設置的時間,該狀態自動變為RUNNABLE狀態。導致該狀態的實現方式有:Thread.sleep(long timeout)、Thread.join(long timeout)、Object.wait(long timeout)、LockSupport.parkNanos、LockSupport.parkUntil等。
TERMINATED:該狀態與NEW狀態一樣為JVM內部狀態,不會映射到操作系統的線程狀態。該狀態為線程結束後的狀態,表示線程執行完畢。
- 結語
本文介紹了java多線程的實現方式及運行狀態,算是一篇《深入淺出多線程》系列的引言。本博客僅僅想把自己掌握的東西做一些沈澱及反思,方便本人及有需要的人查閱。對該系列有興趣的朋友可以關註我。
深入淺出多線程——線程基礎篇