1、執行緒的狀態
2、建立和使用多執行緒
##3、執行緒同步
#4、同步集合
#執行緒的狀態
##執行緒有五種狀態:新建、就緒、執行、阻塞或結束。
新建:新建一個線程,線程進入新狀態;
就緒:呼叫線程的start()方法啟動線程後,進入就緒狀態;
運行:當得到CPU時間,執行緒從就緒態進入運行態,如果時間片完或呼叫yield()方法,運行態的執行緒可能進入就緒態;
阻斷:呼叫join()、sleep()、或wait ()方法,或等待I/O結束,執行緒處於阻塞態;
完成:當執行緒執行完run()方法,這個執行緒就結束。
建立並使用多執行緒#Thread的類別圖
1、繼承Thread類別來建立新執行緒
#2、實作Runnable
Char實作了Runnable接口,並使用Thread創建線程,由於Thread類別實作了Runnable接口,所以可以創建這個類別的一個對象,並且調用它的start方法來啟動線程3、線程池
Java提供Executor接口來執行線程池中的任務,提供ExecutorService介面來管理和控制任務。
#執行緒同步 如果一個共享資源被多個執行緒同時訪問,可能會遭到破壞。例如資料域被先後修改的順序不同,則最後的值可能不確定。
競爭狀態:如果兩個或多個任務以一種會引起衝突的方式存取一個公共的資源,稱為競爭狀態
為了避免競爭狀態,應該防止多個執行緒同時進入程式的某一特定部分,程式中的這部分稱為臨界區。
1、利用加鎖同步
Java可以明確地採用鎖定和狀態來同步執行緒。一個鎖是一個Lock介面的實例,它定義了加鎖和釋放鎖的方法。
RenntrantLock是Lock的一個實現,用於創建相互排斥的鎖。可以創建特定公平策略的鎖定。公平策略值為1真,則確保等待時間最長的執行緒先獲得鎖定。為假,則給任意一個等待的線程。2、執行緒協作
透過呼叫Lock物件的newCondition()方法而建立的對象,可以使用await(),signal()和signalAll()方法來實作執行緒之間的相互通訊。
當執行緒呼叫await()方法時,執行緒就進入等待狀態,等待喚醒的訊號。
3、阻塞佇列
可以對目前執行緒產生阻塞,如果一個執行緒從一個空的阻塞佇列中取元素,此時執行緒會被阻塞知道佇列中有了元素,被阻塞的佇列會被自動喚醒這樣提供了極大的方便性。
幾種阻塞佇列:
1:ArrayBlockingQueue使用陣列來實作阻塞佇列,必須指定一個容量或可選的公平策略來建構2:LinkedBlockingQueue使用鍊錶來實作阻塞佇列。可以創造無邊界的或有邊界。
3:PriorityBlockQueue優先權佇列,依照元素的優先權對元素進行排序。
ArrayBlockingQueue資料域
#可以看出儲存空間為數組,並且有用到鎖定。
兩個重要方法的實作
當佇列滿時等待,不滿則進隊,此時用鎖定同步
佇列空時等待,不空時出隊。
阻塞佇列的應用
由例子可知,生產者往隊列放數,消費者從隊列取數,當隊列為空則等待,同步已在隊列中實現,無需使用鎖和條件。
3、信號量
信號量指對共同資源進行存取的物件。在存取資源之前,執行緒必須從信號量中取得許可。在訪問完資源之後,必須把許可證回傳給信號量。
程式建立了一個具有一個許可的信號量。當一個執行緒獲得許可,其他執行緒不能存取這個資源,直到先前的執行緒釋放該許可。
同步集合
Java集合框架中的類別不是執行緒安全的;也就是說,如果它們同時被多個執行緒存取和更新,它們的內容可能會被破壞,可以透過鎖定集合或同步集來保護合集中的資料
相關文章:
#以上是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 無盡。

熱門文章

熱工具

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

Atom編輯器mac版下載
最受歡迎的的開源編輯器

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具

WebStorm Mac版
好用的JavaScript開發工具