程序(process)是計算機中的程式關於某資料集合上的一次執行活動,是系統進行資源分配和排程的基本單位,是作業系統結構的基礎。在早期面向程序設計的計算機結構中,程序是程式的基本執行實體;在當代面向執行緒設計的計算機結構中,程序是執行緒的容器。程式是指令、資料及其組織形式的描述,程序是程式的實體。所有執行中的任務通常就是乙個程序,當乙個程式進入記憶體執行時,即變成乙個程序。程序是處於執行過程中的程式。
程序的三個特徵:
動態性:程式是乙個靜態的指令集合,程序是乙個正在系統中活動的指令集合。
併發性:多個程序可以在單個處理器上併發執行,多個程序之間互不影響。
2.1、繼承thread類建立執行緒類
通過繼承thread類來建立並啟動多執行緒的步驟
1、定義thread的子類,並重寫run()方法,該方法就是執行緒執行體。
2、建立thread子類的例項
3、呼叫執行緒物件的start()方法來啟動該執行緒,不論使用什麼方式建立執行緒,啟動都是呼叫start()方法
package usethread;
public
class
firstthread
extends
thread
}public
static
void
main(string args) }}
}
2.2、實現runnable介面建立執行緒類
實現runnable介面建立執行緒類
1、定義runnable介面的實現類,並重寫該介面的run()方法,該方法就是執行緒執行體
2、建立runnable實現類的例項,並以此例項作為thread的target來建立thread物件,該物件才是真正的執行緒物件(thread中的構造方法,詳細請看api)
3、呼叫執行緒物件的start()方法來啟動該執行緒
package usethread;
public
class
secondthread
implements
runnable
}public
static
void
main(string args) }}
}
2.3、使用callable和future建立執行緒類
略3.1、新建和就緒狀態
當使用new關鍵字建立了乙個執行緒之後,該執行緒就處於新建狀態,當執行緒物件呼叫了start()方法之後,該執行緒處於就緒狀態,處於這個狀態的執行緒並沒有開始執行,只是表示該執行緒可以執行了,至於該執行緒 何時開始執行,取決於jvm裡執行緒排程器的排程。
3.2、執行和阻塞狀態
如果處於就緒狀態的執行緒獲得了cpu,開始執行run()方法的執行緒執行體,則執行緒處於執行狀態。乙個執行緒不可能一直處於執行狀態,執行緒在執行中需要被中斷,目的是使其他程序獲得執行的機會。
當發生如下情況時,執行緒將會進入阻塞狀態
1、執行緒呼叫sleep()方法主動進圖阻塞狀態
2、執行緒呼叫了乙個阻塞式io方法
3、執行緒試圖獲得乙個同步***,但該執行緒正被其他執行緒所持有
4、執行緒在等待某個通知
5、程式呼叫了執行緒的suspend()方法將該執行緒掛起,易產生死鎖
當發生如下情況時,執行緒將會解除阻塞狀態
1、呼叫sleep()方法的執行緒經過了指定的時間
2、執行緒呼叫的阻塞式io方法已經返回
3、執行緒成功地獲得了試圖取得的同步***
4、執行緒正在等待某個通知時,其他程序發出了乙個通知
5、處於掛起狀態的執行緒被呼叫了resume()恢復方法
3.3、執行緒死亡
執行緒會以如下三種方式結束,結束後就處於死亡狀態
1、run()或call()方法執行完成,執行緒正常結束
2、執行緒丟擲乙個未不活的exception或error
3、直接呼叫該執行緒的stop()方法結束執行緒,易導致死鎖
package usethread;
public
class
startdead
extends
thread
}public
static
void
main(string args) }}
}
java 多執行緒1
public class threadtest extends thread thread.sleep 100 system.out.println this.getname i catch interruptedexception e public static void main string ...
Java 多執行緒1
程序 執行著的應用程式 程序之間的記憶體不是共享的。多執行緒 在單個程序中同時執行多個執行緒完成不同的工作。關於多執行緒 1 程序內併發執行的 段 單核cpu巨集觀上並行,微觀上還是序列 2 執行緒之間共享記憶體 3 主要用於建立靈活相應的桌面程式 4 每個執行著的執行緒對應乙個stack 5 每個...
java多執行緒練習1
5輛汽車過隧道,隧道一次只能通過一輛汽車,每輛汽車通過時間不固定 1 class threaddemo2 227 catch exception e 29 system.out.println 所有車都已經通過隧道了 30 31 3233 使用單個執行緒類實現 34class car extends...