1. 程式人生 > >java多執行緒程式設計基礎講解

java多執行緒程式設計基礎講解

講解java多執行緒的問題之前,我們需要了解兩個概念:

1.程序:可以先簡單理解為,就是我們開發的完成某種部分功能的程式程式碼在CPU中跑起來之後的樣子。所以程序應該是作業系統分配的記憶體空間+1個或多個執行緒組成的。

2.執行緒:可以理解為組成程序的一些程式碼流,這些程式碼流跑起來就叫執行緒。執行緒不能單獨存在,它必須依託執行緒。

舉個例子:

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);
		}
	}
}
上面程式碼跑起來就叫一個程序,功能是打印出一個ArrayList集合內容。顯然,這個程序只有一個執行緒。
現在想同時讓這個程序列印好幾種內容,每種內容由一個執行緒去完成。

我這裡是用實現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都得到了執行,而且每次列印順序都不一樣,因為兩個執行緒再主程序中是併發執行的。