多線程被認為是計算機編程中更復(fù)雜的主題之一,特別是在 Java 中。在應(yīng)用程序中正確使用多線程需要高水平的技能、知識和經(jīng)驗。想了解有關(guān)java更多詳細信息,建議參加Java培訓(xùn),通過系統(tǒng)全面的學(xué)習(xí),可以快速提升自己。
以下是Java中多線程接口和類的一些核心概念和解釋:
線程:在Java中,線程類是與多線程相關(guān)的最重要的類。線程可以通過擴展這個類來實現(xiàn)。本文稍后將演示它的用法。在生產(chǎn)或開發(fā)環(huán)境中,開發(fā)人員可能會發(fā)現(xiàn)修復(fù)與多線程相關(guān)的問題非常困難。了解鎖可能有助于解決最令人困惑和最常見的錯誤,即使是經(jīng)驗豐富的 Java 程序員也難以理解。
Runnable:Runnables 是另一種創(chuàng)建線程的方法。你可以通過實現(xiàn) Runnable 接口或擴展線程類在 Java 中創(chuàng)建線程。在這種情況下,開發(fā)人員必須從這個接口重寫 run() 方法來實現(xiàn)邏輯。(注意:Thread 類已經(jīng)實現(xiàn)了 Runnable)。為了更好地理解多線程,請嘗試在下面顯示的每個方法中記住共享對象的鎖定狀態(tài)(如果適用)。
start(), Lock Status:可以獲取鎖。調(diào)度線程運行時調(diào)用此方法。線程一旦被調(diào)度并且 CPU 周期可用,就會運行。
run(), Lock Status:可以獲取鎖;它被 Thread 運行時隱式調(diào)用,以開始執(zhí)行線程。在java培訓(xùn)中,有系統(tǒng)全面的理論知識和企業(yè)級實戰(zhàn)項目,可以讓你真正掌握java知識和技能,更好地進行項目開發(fā)。
yield(), Lock Status:鎖被持有;這種特殊的方法要么產(chǎn)生或?qū)⒖刂茩?quán)轉(zhuǎn)移到具有相同優(yōu)先級的不同線程。不能保證它將控制權(quán)轉(zhuǎn)移到哪個線程——或者它是否會轉(zhuǎn)移控制權(quán)——并不能保證。下面的示例代碼顯示了如何通過擴展線程類在 Java 中創(chuàng)建線程。
sleep(), Lock Status:鎖被持有;使用此方法將導(dǎo)致當(dāng)前正在執(zhí)行的線程在給定的時間內(nèi)暫停其執(zhí)行。可以以毫秒為單位指定執(zhí)行暫停的時間量。將拋出一個中斷的異常,程序員需要解決這個問題。
join(), Lock Status:鎖被持有;使用它會導(dǎo)致執(zhí)行模式,導(dǎo)致所有線程在當(dāng)前線程的末尾加入。在這種情況下,當(dāng)前線程在切換到另一個線程之前會繼續(xù)完成。這也會引發(fā)一個中斷的異常,開發(fā)人員需要解決這個異常。
suspend(), Lock Status:鎖被持有;這已被棄用。
resume(),鎖狀態(tài):鎖被持有;這已被棄用;這兩個線程都已被棄用,因為它們會導(dǎo)致死鎖和凍結(jié)進程。
stop(), Lock Status:鎖被釋放; 這已被棄用; 這種特殊的線程方法已被棄用,因為它由于損壞的對象而創(chuàng)建了不規(guī)則的狀態(tài)。不建議使用。在java培訓(xùn)中,培訓(xùn)課程實時更新,緊跟市場和企業(yè)需求,讓你掌握最新技術(shù),走在市場前沿。
Java 對象類和多線程
Java 的 Object 類固有地包含用于控制訪問該對象的方法,尤其是在共享或多線程應(yīng)用程序中。
wait(),Lock Status:當(dāng)前對象鎖釋放,其他鎖被持有; 使用 wait() 方法將導(dǎo)致當(dāng)前線程停止執(zhí)行并進入等待狀態(tài)。這也將釋放它放置在當(dāng)前對象上的鎖,同時保留其他對象上的所有其他鎖。
notify(),鎖狀態(tài):鎖被隨機等待線程獲取; notify() 方法將通知正在等待獲取當(dāng)前共享對象上的鎖的線程。
notifyAll(),鎖狀態(tài):鎖被任意線程獲取,等待獲取當(dāng)前共享對象的鎖。將使用此方法通知所有等待獲取線程鎖的線程。
多線程和并發(fā)程序中常遇到的有Memory-interface、競爭條件、死鎖、活鎖和饑餓。問題是沒有止境的,如果你弄錯了,將很難發(fā)現(xiàn)和調(diào)試。這是大多數(shù)基于面試的,而不是基于實際應(yīng)用的Java線程問題。想學(xué)習(xí)java多線程的同學(xué)建議通過參加java培訓(xùn)來提升自己,在專業(yè)老師的指導(dǎo)下,可以獲得很大進步。