java多執行緒程式設計基礎講解
阿新 • • 發佈:2019-02-15
講解java多執行緒的問題之前,我們需要了解兩個概念:
1.程序:可以先簡單理解為,就是我們開發的完成某種部分功能的程式程式碼在CPU中跑起來之後的樣子。所以程序應該是作業系統分配的記憶體空間+1個或多個執行緒組成的。
2.執行緒:可以理解為組成程序的一些程式碼流,這些程式碼流跑起來就叫執行緒。執行緒不能單獨存在,它必須依託執行緒。
舉個例子:
上面程式碼跑起來就叫一個程序,功能是打印出一個ArrayList集合內容。顯然,這個程序只有一個執行緒。public class ArrayListTest { public static void main(String[] args) { ArrayList<String> s = new ArrayList<String>(); s.add("first"); s.add("second"); s.add(1, "third"); for(String k : s){ System.out.println(k); } } }
現在想同時讓這個程序列印好幾種內容,每種內容由一個執行緒去完成。
我這裡是用實現Runable介面的方式實現多執行緒程式設計的。
//建立一個Thread1執行緒類 public class Thread1 implements Runnable { <span style="white-space:pre"> </span>@Override <span style="white-space:pre"> </span>public void run() { <span style="white-space:pre"> </span>for(int i=0;i<5;i++){ <span style="white-space:pre"> </span>System.out.println("Thread1: 執行緒Thread1執行的內容!"+i); <span style="white-space:pre"> </span>}<span style="white-space:pre"> </span> <span style="white-space:pre"> </span>} }
然後在主類中執行定義的兩個執行緒,讓這兩個執行緒同時執行,完成各自的功能任務。//建立一個Thread2執行緒類 public class Thread2 implements Runnable{ <span style="white-space:pre"> </span>@Override <span style="white-space:pre"> </span>public void run() { <span style="white-space:pre"> </span>for(int i=0;i<5;i++){ <span style="white-space:pre"> </span>System.out.println("Thread2: 執行緒Thread2執行的內容!"+i); <span style="white-space:pre"> </span>} <span style="white-space:pre"> </span>} }
public class RunThread {
public static void main(String[] args) {
//定義執行緒要執行的目標物件
Thread1 th1 = new Thread1();
Thread2 th2 = new Thread2();
//建立執行緒,設定執行緒執行物件和執行緒名稱
Thread ta = new Thread(th1,"A");
Thread tb = new Thread(th2,"B");
//執行執行緒
ta.start();
tb.start();
}
}
執行主類之後,我們可以看到,兩個執行緒ta,tb都得到了執行,而且每次列印順序都不一樣,因為兩個執行緒再主程序中是併發執行的。