1. 程式人生 > >深入淺出多線程——線程基礎篇

深入淺出多線程——線程基礎篇

support block 操作系統 strong 不同 con exe 映射 nds

  • 概述

  多線程是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 implements
Runnable { /** * 線程執行內容。 */ @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種狀態

  根據官方定義,線程狀態分為:NEWRUNNABLEBLOCKEDWAITING、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多線程的實現方式及運行狀態,算是一篇《深入淺出多線程》系列的引言。本博客僅僅想把自己掌握的東西做一些沈澱及反思,方便本人及有需要的人查閱。對該系列有興趣的朋友可以關註我。

深入淺出多線程——線程基礎篇