摘要:如果沒有前臺(tái)線程了,那么整個(gè)程序都會(huì)結(jié)束。線程的合并將子線程加入主線程,兩個(gè)線程合并秒后分開。線程同步代碼塊必須是同一個(gè)對象才能進(jìn)行同步。生命周期方法完成方法阻塞恢復(fù)線程執(zhí)行,以上方法容易造成死鎖。線程的優(yōu)先級(jí)默認(rèn)為。
線程知識(shí)點(diǎn)歸納,后續(xù)更新
后臺(tái)線程:設(shè)置Thread.setDaemon(true)就是后臺(tái)線程了。
前臺(tái)線程:不設(shè)置。
如果沒有前臺(tái)線程了,那么整個(gè)程序都會(huì)結(jié)束。
線程的合并:Thread.join(10000);
將子線程加入主線程,兩個(gè)線程合并10秒后分開。
線程同步:
synchronized(Object){ 代碼塊 } Object必須是同一個(gè)對象才能進(jìn)行同步。
在方法前面加synchronized。new Thread(Object).start();start只是準(zhǔn)備運(yùn)行,處于準(zhǔn)備狀態(tài),并不是確定開始執(zhí)行。
實(shí)現(xiàn)代碼塊與方法的同步:synchronized(Object),
Object為Object.class(兩個(gè)為同一個(gè)對象監(jiān)視器)
死鎖:你等我,我等你
線程間的通信:(要是同一個(gè)對象的waitnotifynotifyAll)
wait:告訴當(dāng)前線程放棄監(jiān)視器并進(jìn)入睡眠狀態(tài),直到其他線程進(jìn)入同一監(jiān)視器并調(diào)用notify為止。
notify:喚醒同一對象監(jiān)視器中調(diào)用wait的第一個(gè)線程。用于類似飯館有一個(gè)空位后通知所有等候就餐的顧客中的第一位可以入座的情況。
notifyAll:喚醒同一對象監(jiān)視器中調(diào)用wait的所有線程,具有最高優(yōu)先級(jí)的線程首先被喚醒并執(zhí)行。
生命周期:start-->runnable-->running-->run()方法完成
方法:
suspend(阻塞),resumen(恢復(fù)線程執(zhí)行),stop()
以上方法容易造成死鎖。最好用一個(gè)變量去控制它的生命周期。
sleep方法:讓當(dāng)前線程休眠。自己擁有鎖,不讓出。
自己過一段時(shí)間可以醒。
而wait方法,是在等待,讓出了鎖,需要?jiǎng)e人叫醒。
yield方法:讓出cpu,給其他線程執(zhí)行機(jī)會(huì)。
線程的優(yōu)先級(jí)(Priority):默認(rèn)為5。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/70688.html
摘要:哪吒社區(qū)技能樹打卡打卡貼函數(shù)式接口簡介領(lǐng)域優(yōu)質(zhì)創(chuàng)作者哪吒公眾號(hào)作者架構(gòu)師奮斗者掃描主頁左側(cè)二維碼,加入群聊,一起學(xué)習(xí)一起進(jìn)步歡迎點(diǎn)贊收藏留言前情提要無意間聽到領(lǐng)導(dǎo)們的談話,現(xiàn)在公司的現(xiàn)狀是碼農(nóng)太多,但能獨(dú)立帶隊(duì)的人太少,簡而言之,不缺干 ? 哪吒社區(qū)Java技能樹打卡?【打卡貼 day2...
摘要:本篇博客主要針對虛擬機(jī)的晚期編譯優(yōu)化,內(nèi)存模型與線程,線程安全與鎖優(yōu)化進(jìn)行總結(jié),其余部分總結(jié)請點(diǎn)擊虛擬總結(jié)上篇,虛擬機(jī)總結(jié)中篇。 本篇博客主要針對Java虛擬機(jī)的晚期編譯優(yōu)化,Java內(nèi)存模型與線程,線程安全與鎖優(yōu)化進(jìn)行總結(jié),其余部分總結(jié)請點(diǎn)擊Java虛擬總結(jié)上篇 ,Java虛擬機(jī)總結(jié)中篇。 一.晚期運(yùn)行期優(yōu)化 即時(shí)編譯器JIT 即時(shí)編譯器JIT的作用就是熱點(diǎn)代碼轉(zhuǎn)換為平臺(tái)相關(guān)的機(jī)器碼...
摘要:時(shí)間年月日星期六說明本文部分內(nèi)容均來自慕課網(wǎng)。慕課網(wǎng)教學(xué)源碼無學(xué)習(xí)源碼第一章課前準(zhǔn)備前言課程說明比較和這兩種線程創(chuàng)建的方式,需要知道和的基本創(chuàng)建方式。一旦主線程獲取到了用戶的輸入,這時(shí)候,阻塞就會(huì)解除掉,主線程繼續(xù)運(yùn)行,直到結(jié)束。 時(shí)間:2017年07月08日星期六說明:本文部分內(nèi)容均來自慕課網(wǎng)。@慕課網(wǎng):http://www.imooc.com教學(xué)源碼:無學(xué)習(xí)源碼:https://g...
摘要:本文主要內(nèi)容為簡單總結(jié)中線程池的相關(guān)信息。方法簇方法簇用于創(chuàng)建固定線程數(shù)的線程池。三種常見線程池的對比上文總結(jié)了工具類創(chuàng)建常見線程池的方法,現(xiàn)對三種線程池區(qū)別進(jìn)行比較。 概述 線程可認(rèn)為是操作系統(tǒng)可調(diào)度的最小的程序執(zhí)行序列,一般作為進(jìn)程的組成部分,同一進(jìn)程中多個(gè)線程可共享該進(jìn)程的資源(如內(nèi)存等)。在單核處理器架構(gòu)下,操作系統(tǒng)一般使用分時(shí)的方式實(shí)現(xiàn)多線程;在多核處理器架構(gòu)下,多個(gè)線程能夠...
摘要:多線程環(huán)境下的一些問題安全性問題在沒有正確同步的情況下,多線程環(huán)境下程序可能得出錯(cuò)誤的結(jié)果。一些相關(guān)概念競爭條件多線程的環(huán)境下,程序執(zhí)行的結(jié)果取決于線程交替執(zhí)行的方式。而線程的交替操作順序是不可預(yù)測的,如此程序執(zhí)行的結(jié)果也是不可預(yù)測的。 入口 Java多線程的應(yīng)用復(fù)雜性之如jvm有限的幾個(gè)內(nèi)存方面的操作和規(guī)范,就像無數(shù)紛繁復(fù)雜的應(yīng)用邏輯建立在有限的指令集上。 如何寫出線程安全的程序,有...
時(shí)間:2017年07月09日星期日說明:本文部分內(nèi)容均來自慕課網(wǎng)。@慕課網(wǎng):http://www.imooc.com教學(xué)源碼:無學(xué)習(xí)源碼:https://github.com/zccodere/s... 第一章:課程簡介 1-1 課程簡介 課程目標(biāo)和學(xué)習(xí)內(nèi)容 共享變量在線程間的可見性 synchronized實(shí)現(xiàn)可見性 volatile實(shí)現(xiàn)可見性 指令重排序 as-if-seria...
閱讀 3411·2021-11-22 15:22
閱讀 2389·2021-09-06 15:00
閱讀 893·2020-06-22 14:39
閱讀 3718·2019-08-30 15:56
閱讀 1554·2019-08-30 12:55
閱讀 3297·2019-08-29 17:19
閱讀 3241·2019-08-26 11:41
閱讀 628·2019-08-23 17:14