從本篇開始,我們將會逐漸總結(jié)關(guān)于java并發(fā)這一塊的內(nèi)容,也可以理解為是我的筆記,主要來自于一些博客和java書籍中的內(nèi)容,所有的內(nèi)容都是來自于他們之中并且加上了我自己的理解和認識。
     我們將會從以下的幾點理解java線程的一些概念:

  • 線程的基本概念和優(yōu)劣之處

  • 創(chuàng)建一個線程的兩種方式

  • 線程的屬性

  • 線程的狀態(tài)

  • synchronized可修飾的方法

  • synchronized的重要特性

    一、線程的基本概念
         在計算機中有進程和線程這么兩個概念,進程中可以有多個線程,它們是從屬關(guān)系,進程往往更像是資源的占有者,線程才是程序的執(zhí)行者,多個線程之間共享著進程中的資源。一個cpu同時只能運行一個線程,每個線程都有一個時間片,時間片用完了就會被阻塞并讓出CPU的控制權(quán),交給下一個線程使用。這樣在計算機中就可以實現(xiàn)多任務的假象,其實CPU在不斷的切換線程,好像多個任務在同時運行。
         使用線程的優(yōu)勢毋庸置疑,可以增加CPU的執(zhí)行效率,一旦某個線程需要等待某種資源(例如:等待打印機),就可以將它阻塞釋放CPU讓CPU執(zhí)行別的線程,而不需要讓CPU和此線程一起等待某種資源從而提高系統(tǒng)效率,另外一點就是可以用這種假象增加用戶體驗度。但是,CPU在切換不同線程之間所要花費的代價也是不可忽視的,在較為復雜的程序中這種劣勢可能九流一毛,但是如果在簡單的程序中就會顯得尤為突出。

         二、創(chuàng)建一個線程
              接下來我們看看如何在java中創(chuàng)建一個線程來實現(xiàn)多個線程同時運行。第一種方式,java 中有一個類Thread,我們只要繼承這個類并重寫他的run方法,調(diào)用start方法就可以啟動一個新的線程了。(沒見過的同學可能不能理解以下代碼,下面我會解釋)

/*聲明自己的一個線程類*/public class Test_thread extends Thread {    //重寫Thread類中的run方法
    public void run(){        System.out.println("i am the thread");
    }
}

public class Test_Class {
    public static void main(String[] args){        Test_thread thread = new Test_thread();
   &nbs
        
		

網(wǎng)友評論