java基礎:線程


線程概念

併發:就是無因果關聯。即若一個系統內部發生的兩個事件無因果聯繫,則稱此兩個事件是併發的。

並行:多個程序在同一時刻同時執行。在物理上必須具備多臺處理機。而併發是指多個程序在同一時間段同時執行。

線程:實現了進程內部的併發執行;是進程內部可併發執行的代碼段。

併發程序的不確定性:由於進程內部的各個線程共享進程的數據區,對數據區操作順序不確定,使得數據區中的值不確定。

爲什麼線程的執行效率比進程的執行效率高?

處理機控制權在進程間切換時線程比進程快,why?因爲進程的創建需要創建專有的數據區,而線程不用(線程只是個代碼段);進程切換時需要先保存當前進程數據區,然後恢復另一個進程專有數據區。

不確定性實例:


public class Demo {
	public static void main(String[] args) throws Exception {
		System.out.print("Main開始");
       TestThread T1=new TestThread("奇數線程", 1);
       TestThread T2=new TestThread("偶數線程", 2);
       T1.start();	T2.start();
       System.out.print("當前有"+Thread.activeCount()+"個線程");
       System.out.print("Main結束");
	}
}
class TestThread extends Thread{
	private int d;
	public TestThread(String name, int d) {
		// TODO Auto-generated constructor stub
		super(name);
		this.d=d;
	}
	@Override
	public void run() {
		// TODO Auto-generated method stub
		for(int i=d; i<500; i+=2){
			System.out.print(" "+i);
		}
		System.out.print(this.getName()+"結束!");
	}
}


語法機制

支持併發的基本語法機制主要集中在:ThreadRunnable接口Object類以及Synchronized修飾。

Thread類封裝了:創建 操控 和 管理線程的手段;

Object類提供了線程通信機制;

Runable接口和Synchronized修飾則對線程應用能力進行了拓展。

線程狀態和生命週期

線程狀態

NEW(新建態):線程對象已經創建但還沒有調用start()方法;

RUNNABLE(運行態):調用了start()方法,線程正在運行,或者正在等待處理機時間片;

BLOCKED(阻塞態):正在獲取監控鎖,等待進入臨界資源;

WAITING(等待態):執行wait()wait(0)之後的狀態;

TIME_WAITING(有時間的等待):和WAITING相似,區別在於等待是有時間限制的

TERMINATED(終止態):線程執行結束。

生命週期


發佈了37 篇原創文章 · 獲贊 11 · 訪問量 35萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章