1. 程式人生 > >執行緒與程序區別以及執行緒作用

執行緒與程序區別以及執行緒作用

1 程序與執行緒

(1)程序:正在進行中的程式。

這裡寫圖片描述
(2)執行緒:就是程序中一個執行單元或執行情景或執行路徑,負責程序中程式執行的控制單元。
這裡寫圖片描述
  一個程序中至少要有一個執行緒。 當一個程序中執行緒有多個時,就是多執行緒。 比如我們經常使用防毒軟體防毒,在防毒的同時我們可以清理電腦垃圾,這就是多執行緒的體現。

2 執行緒的作用

  多執行緒解決的問題:可以讓多部分程式碼同時執行。什麼是同時執行呢?其實都是CPU在瞬間做著快速切換完成的。CPU的切換隨機的,按照時間片的方式來完成。
  其實JAVA執行就是多執行緒的。在執行main函式中內容的同時,垃圾回收器也在回收堆記憶體的垃圾。所以執行main方法的執行緒和執行垃圾回收器的執行緒同時在執行,這就是多執行緒。
JVM在啟動執行緒的時候,每一個執行緒都有自己要執行的內容。其中一個負責執行main函式中的內容,這個執行緒稱之為主執行緒。負責垃圾回收器執行的稱之為垃圾回收執行緒。
  為什麼要啟動多執行緒呢?因為有多部分程式碼需要同時執行。而且每一個執行緒都有自己要執行的內容,這個內容稱之為執行緒的任務。簡單說:啟動執行緒就是為了執行任務,當任務有多個需要同時執行時,就需要多個執行緒。
【例2.1】不使用執行緒的方式的缺點。
ZiThread.java

public class ZiThread {
    private String name;
    ZiThread (String name)
    {
        this.name = name;
    }
    public void show()
    {
        for(int x=1; x<=10; x++)
        {
            for(int y=-99999999; y<99999999; y++){}//刻意寫個迴圈讓程式執行慢一點。
            System.out.println(name+"---"
+x); } } }

ThreadDemo.java

public class ThreadDemo {
    public static void main(String[] args) {
        // TODO 自動生成的方法存根
        ZiThread d1 = new ZiThread ("旺財");
        ZiThread d2 = new ZiThread ("小明");
        d1.show();
        d2.show();
    }
}

執行結果:
這裡寫圖片描述
  分析上述程式碼可以發現,旺財不結束,小明出不來。因為主執行緒執行時,先執行的旺財,再執行小明。那麼,可不可以實現旺財和小明同時執行呢?一條路徑是無法解決這個問題的,需要多條路徑來完成,那麼就得在程式中建立執行緒。而列印小明旺財等程式碼就是執行緒任務。