天天看點

24節視訊+源碼解析深度了解多線程 | Java開發者進階應用站

點選檢視視訊

如果有一天,你遇到這樣一個問題:總票數固定,但是很多人都在賣這種票。這種情況下,我們怎麼樣才能保證票不被重複售賣?又該怎樣去保證所有售出票的數量的準确?是不是已經發現,憑借目前所學所知似乎難以解決。現在,就來帶你去探索多線程開發,解決這個問題!

在這裡,你将通過15篇文章對Java多線程有一個初步且具體的認識,Thread、Runnable、Callable等開發标準為你指明多線程開發之路,synchronized關鍵字確定各線程有序調用,另外還介紹了其他各種方法來實作各式各樣的操作,你将收獲你先要的答案。

靜看Java多線程之路如何直通羅馬

傳統的Dos是單程序處理的模式,而後來多程序的出現大大優化了電腦的處理速度。本節将引出Java多線程的概念。

【本節目标】

通過閱讀本節内容,你将了解到程序與線程的關系,并了解到Java為了優化運作能力支援了多線程開發能力。

點選學習>>

多線程,從start開始!

本節将為讀者介紹多線程的實作方法與相關的注意事項,并指出了線程類中必須實作的run方法的作用。

通過閱讀本節内容,你将了解到繼承Thread類并覆寫run方法的具體要求,并能夠通過執行個體化線程繼承類調用start方法開啟線程的過程中發生的變化。

看Runnable如何巧避單繼承限制

上一節中介紹到通過繼承Thread類實作多線程的方法,這樣做同時也會受到Java單繼承的限制。本節将介紹如何借助Runnable接口避開這個限制。

通過閱讀本節内容,你将了解到如何實作Runnable接口并結合Thread類完成多線程的實作,并學會簡單的運用。

深入剖析Thread與Runnable關系

既然實作了Runnable的類能夠傳入Thread構造方法完成新的線程的生成,說明他們之間存在一定的聯系,本節将為你揭曉此中奧秘。

通過閱讀本節内容,你将通過Thread類的定義及其具體代碼發現它與Runnable的内在聯系,對多線程的概念有更深入的了解。

進一步探索多線程的實作

Runnable接口中并沒有提供傳回一個值的功能,本節提到的Callable則對這一問題進行了解決。讓我們一起來進一步探索多線程的運作吧。

通過閱讀本節内容,你将了解到Callable的相關功能及其實作方法,對Callable和Runnable之間的差別和聯系有一定的認識,了解到多線程在正常運作中的各種狀态和狀态轉變的時機,對多線程有更深入的了解。

線程起名,分工有序

本節為讀者介紹了在使用線程功能的過程中分别為各個線程命名的好處以及正常開發中主線程與子線程的分工模式。

通過閱讀本節内容,你将學會通過線程命名實作對各個線程的準确控制,了解到線程的預設起名規則,并知曉main方法作為主線程處理總體邏輯,多個子線程分别處理各種複雜耗時的邏輯的開發模式。

教你随心操控線程狀态

通過之前的學習我們可以啟動一個線程,但還沒辦法幹擾其運作過程。想知道如何手動控制線程的各種狀态嗎,本節将為你揭曉。

通過閱讀本節内容,你将學會使用sleep方法使線程休眠、使用interrupt方法強行中斷線程,并掌握當線程被中斷時進行中斷異常的方法。

迅速讀懂Java線程的交通規則

線程就像現實世界裡複雜的交通線上運作的汽車,有停車讓行的,也有一路高歌的,甚至還有特殊情況優先行駛的情況,本節将一一介紹這些内容。

通過閱讀本節内容,你将學會使用join方法讓線程強制一直執行、使用yield方法禮讓其他線程優先執行,了解并學會設定線程的優先級使系統自動排程資源執行線程。

使用同步解決多人賣票問題

本節先由多人合賣10張票為例,引出了線程同步問題,并結合執行個體代碼講解了同步機制的實作辦法。

通過閱讀本節内容,你将了解到線程同步問題出現的原因,并學會使用synchronized關鍵字實作多個線程同時隻有一個能進行調用的限制,解決線程同步問題。

同步的缺陷-死鎖問題

在Java發展程序中,往往是為了解決一個或多個問題而提出新的解決辦法,但伴随着新的内容的出現,也會出現新的問題。本節将為讀者介紹同步機制帶來的死鎖問題。

通過閱讀本節内容,你将通過實際運作一段代碼發現兩個程序互相等待對方讓出資源而造成死鎖的問題,了解到此問題出現的原因并具有一定的避免此類問題的認識。

經典案例:生産者-消費者模型

本節将為讀者介紹多線程開發領域中著名的案例-生産者-消費者操作,并指出這一操作在普通的實作過程中遇到的兩個關鍵問題。

通過閱讀本節内容,你将初步了解生産者-消費者操作的内容,并能使用線程相關方法簡單實作這個操作,初步了解到這一操作中的線程不同步問題與重複操作問題。

一文速解生産者-消費者模式問題

本節将結合具體執行個體,手把手帶領讀者解決上一節中提到的生産者-消費者操作中的兩大問題。

通過閱讀本節内容,你将通過實操代碼,進一步掌握synchronized關鍵字的使用方法,解決同步問題,學會使用Object類中提供的相關方法解決重複問題。

教你在停車前為線程配個“保镖”

衆所周知,死鎖是一種十分危險的情況,是以暴力型的線程停止操作被禁用了。為保證線程的流暢運作,本節将帶着讀者優雅地停止線程,并線上程運作路上安排守護線程。

通過閱讀本節内容,你将學會借助循環實作對線程的較為安全的停止操作,并學會建立守護線程,保證相關線程的平穩運作。

另類的“同步”-volatile關鍵字

本節将為讀者展示另一種貌似能解決同步問題的關鍵字-volatile,并結合實際代碼為讀者深刻講解了這個關鍵字的相關機制,剖析了它和synchronized的不同之處。

通過閱讀本節内容,你應當掌握volatile關鍵字的适用範圍及其作用,認識到volatile關鍵字雖然使資料操作直接面向原始變量,使得變量完成一定意義上的同步,但仍無法替代synchronized的作用。

三則案例,助你掌握多線程

經曆了前幾節的學習,相信你已經對多線程有了自己的見解,現在,跟作者一起實操三則案例,助你快速消化所學知識吧!

通過閱讀本節内容,你将通過數字加減、生産電腦、競争搶答三則案例的多線程相關邏輯實作,進一步掌握多線程開發的相關能力,對線程的各類操作更加得心應手。

點選實戰學習>>

更多Java開發者課程盡在→

Java開發者