天天看點

精通Java多線程學習(一)

1.概念

程式:是一系列指令的集合,是靜态的。比如說我們的QQ、微信、網易雲音樂等。

程序:程式運作後就會産生程序,每個程序在記憶體中都有一個獨立的位址空間,是作業系統進行資源配置設定和排程的獨立單元。程序之間可以并發執行。一個程序包含多個線程。

線程:是程序的一個實體,是cpu進行排程和配置設定的基本機關。由于線程比較小更容易進行并發,而且其中的一個線程死掉也不會導緻整個程序的崩潰。

2.引入線程的思想。

多線程在現代網際網路的應用非常廣泛,如大型的電商網站、12306等對并發的要求都非常的高。

3.實作多線程

通常來說實作一個線程的方法有兩種:繼承Thread和實作Runnable接口

下面就是一個繼承Thread類的線程。

public class ThreadDemo1 extends Thread{
    private String name;
    ThreadDemo1(String name){
        this.name = name;
    }
    @Override
    public void run() {
        for (int i = 0; i < 60; i++) {
            System.out.println(name+"繼承Thread線程運作:"+i);
        }
    }
}
           

對這個類進行測試:

public class Test {
    public static void main(String[] args){
       ThreadDemo1 demo1 = new ThreadDemo1("one");
        ThreadDemo1 demo2 = new ThreadDemo1("two");
        demo1.start();
        demo2.start();
       }
    }
}
           

可以看到程式會随機的輸出兩個線程的列印結果。兩個線程的輸出順序是不确定的。

精通Java多線程學習(一)

為什麼會出現這種情況呢?

因為線程的運作是由cpu進行排程的,一個cpu在同一時間隻能運作一個線程(單核cpu),之是以我們看到很多程式同時在運作是因為cpu在做很快的切換操作。cpu調到了誰就執行誰。

繼續閱讀