執行緒與程序區別以及執行緒作用
阿新 • • 發佈:2019-02-19
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();
}
}
執行結果:
分析上述程式碼可以發現,旺財不結束,小明出不來。因為主執行緒執行時,先執行的旺財,再執行小明。那麼,可不可以實現旺財和小明同時執行呢?一條路徑是無法解決這個問題的,需要多條路徑來完成,那麼就得在程式中建立執行緒。而列印小明旺財等程式碼就是執行緒任務。