學過Java的人都知道,Java是少數的集中支援多執行緒的語言之一,大多數的語言智慧運行單獨的一個程式區塊,無法同時執行不同的多個程式區塊,Java的多執行緒機制彌補了這個缺憾,他可以讓不同的程式區塊一起運行,這樣可以讓程式運作更加順暢,同時也達到了多工處理的目的:
一、執行緒與行程的概念
現在的作業系統是多任務作業系統。多執行緒是實現多任務的一種方式。
進程是程式的一個動態執行過程,是指一個記憶體中運行的應用程序,每個進程都有自己獨立的一塊記憶體空間,一個進程中可以啟動多個線程。例如在Windows系統中,一個運行的exe就是一個進程。執行緒是指進程中的一個執行流程,一個行程中可以運行多個執行緒。例如java.exe進程中可以運行很多執行緒。執行緒總是屬於某個進程,進程中的多個執行緒共享進程的記憶體。 「同時」執行是人的感覺,在執行緒之間實際上輪換執行。
二、Java中執行緒的實作
在Java中藥想實作多執行緒有兩種手段,一種是整合Thread類,另一種就是實作Runnable接口。下面看繼承自Thread類別執行緒的建立原理:
先定義一個執行緒類別該類別必須繼承自Thread類,同時必須明確的覆蓋run()方法
如:
class MyThread extends Thread{ public void run(){ //覆写Thread类中的run方法此方法是线程中 线程主体; 的主体 }
接著定義一個主類,實例化執行緒類別的對象,發動啟動執行緒的指令
#如:
public class ThreadText{ public stataic void main(String args[]){ MyThread m1=new MyThread();//实例化对象 m1.start();//启动多线程 } };
實作Runnable介面:
# 先定義一個執行緒類別繼承自Runnable介面
如:
class MyThread implements Runnable{ public void run(){ //覆写Runnable接口中的run方法 线程主体; }
然後定義一個主類,實例化執行緒類別的對象,發動啟動執行緒的指令
如:
public class ThreadText{ public stataic void main(String args[]){ MyThread m1=new MyThread();//实例化Runnable子类对象 Thread t1=new Thread(m1);//实例化Thread类对象 t1.start();//启动多线程 } };
三、執行緒的幾個狀態
在Java當中,執行緒通常都有五種狀態,建立、就緒、運作、阻塞和死亡。
第一是建立狀態。在產生線程對象,並沒有呼叫該對象的start方法,這是線程處於創建狀態。
第二是就緒狀態。當呼叫了線程物件的start方法之後,該線程就進入了就緒狀態,但是此時線程調度程序還沒有把該線程設定為當前線程,此時處於就緒狀態。在執行緒運行之後,從等待或睡眠回來之後,也會處於就緒狀態。
第三是運行狀態。線程調度程序將處於就緒狀態的線程設定為當前線程,此時線程就進入了運行狀態,開始運行run函數當中的程式碼。
第四是阻塞狀態。執行緒正在運作的時候,被暫停,通常是為了等待某個時間的發生(比如說某項資源就緒)之後再繼續運作。 sleep,suspend,wait等方法都可以導致執行緒阻塞。
第五是死亡狀態。如果一個執行緒的run方法執行結束或呼叫stop方法後,該執行緒就會死亡。對於已經死亡的線程,無法再使用start方法令其進入就緒。
以上是解析Java中多執行緒原理的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本文討論了使用Maven和Gradle進行Java項目管理,構建自動化和依賴性解決方案,以比較其方法和優化策略。

本文使用Maven和Gradle之類的工具討論了具有適當的版本控制和依賴關係管理的自定義Java庫(JAR文件)的創建和使用。

本文討論了使用咖啡因和Guava緩存在Java中實施多層緩存以提高應用程序性能。它涵蓋設置,集成和績效優勢,以及配置和驅逐政策管理最佳PRA

本文討論了使用JPA進行對象相關映射,並具有高級功能,例如緩存和懶惰加載。它涵蓋了設置,實體映射和優化性能的最佳實踐,同時突出潛在的陷阱。[159個字符]

Java的類上載涉及使用帶有引導,擴展程序和應用程序類負載器的分層系統加載,鏈接和初始化類。父代授權模型確保首先加載核心類別,從而影響自定義類LOA


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

SublimeText3漢化版
中文版,非常好用

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

SublimeText3 英文版
推薦:為Win版本,支援程式碼提示!

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),