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();
}
}
}
可以看到程式會随機的輸出兩個線程的列印結果。兩個線程的輸出順序是不确定的。
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIwczLcVmds92czlGZvwVP9EUTDZ0aRJkSwk0LcxGbpZ2LcBDM08CXlpXazRnbvZ2LcRlMMVDT2EWNvwFdu9mZvwleNRVT6lFVPhXS6hFeGNDTwYVbiVHNHpleO1GTulzRilWO5x0LcRHelR3LcJzLctmch1mclRXY39zM5UjN1cDMzETMyMDM4EDMy8CX0Vmbu4GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.jpg)
為什麼會出現這種情況呢?
因為線程的運作是由cpu進行排程的,一個cpu在同一時間隻能運作一個線程(單核cpu),之是以我們看到很多程式同時在運作是因為cpu在做很快的切換操作。cpu調到了誰就執行誰。