一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

線程基礎(chǔ)

 LGPL 2023-05-04 發(fā)布于北京

常見理解

線程的生命周期
線程創(chuàng)建的兩種方式

1.第一二中比較常見,不過多贅述,嚴格意義說只有兩種創(chuàng)建方式,第三種其實也是實現(xiàn)的Runnable,有返回值,并且是阻塞的,sleep10s后方法執(zhí)行完以后就會接著執(zhí)行

如何讓線程停止下來

雖然Thread.stop()能讓線程停止,但是這種方法不推薦,屬于暴力停止,下面看看有什么方法

第一版線程停止

雖然userThread發(fā)送中斷信號,但是不會停止

第二版

此時依然發(fā)起中斷信號,但是run函數(shù)判斷是否攔截,默認為false,當發(fā)現(xiàn)變?yōu)閠rue,那么就中斷停止,同理Runnable的run也是一樣的,你可能會問為什么第二次就停止了,第一次為什么不停止,因為第一的判斷條件并沒有關(guān)聯(lián)到intercepted(),while(true)是死循環(huán),線程不會死亡,一直在執(zhí)行,當?shù)诙沃袛嘧鳛闂l件時,為true run方法就會走完,線程會死亡

發(fā)生異常將intercept狀態(tài)重置為false

如果main函數(shù)中發(fā)出中斷信號,那么代碼中發(fā)生異常此時會重置為false,線程不會中斷,只有在catch中再講中斷信號重置為true,才會中斷成功,所以如果想中斷,還要記得此處

守護線程

前提主線程睡了10秒后主線程會結(jié)束,開啟子線程前將t線程作為主線程的守護線程,10秒過后主線程死亡,守護線程也會跟著死亡

如何讓線程按順序執(zhí)行

線程使用join順序執(zhí)行

首先如果不加t1.join(),那么cpu會切換線程執(zhí)行,輸出結(jié)果就是一會打印A一會打印B,加了以后t1獲得了cpu的執(zhí)行權(quán),一定會再t1執(zhí)行結(jié)束后才會執(zhí)行t2,輸出結(jié)果A打印99次以后B再打印99次

面試總結(jié)

【面試題】:什么是進程和線程

回答:進程是操作系統(tǒng)處理的最小單元,線程是處理器cpu處理的最小單元。一個進程至少一個線程 或 多個線程,如果一個進程,還有一個線程沒有殺掉還存活,那么進程還存活 (線程依附進程)。

【面試題】:并行和并發(fā)區(qū)別

回答

一、意思不同

1、并發(fā):并發(fā)是指兩個或多個事件在同一時間間隔發(fā)生。

2、并行:并行是指兩個或者多個事件在同一時刻發(fā)生。

二、側(cè)重不同

1、并發(fā):并發(fā)側(cè)重于在同一實體上。

2、并行:并行側(cè)重于在不同實體上。

三、處理不同

1、并發(fā):并發(fā)在一臺處理器上“同時”處理多個任務(wù)。

2、并行:并行在多臺處理器上同時處理多個任務(wù)。

個人理解:并發(fā)是一個處理器cpu在單位時間內(nèi)切換不同的線程進行執(zhí)行任務(wù),吞吐量

                  并行是多個處理器在同一時間處理多個線程進行執(zhí)行任務(wù)

【面試題】 就是 run 和start的區(qū)別 ?

答:run是函數(shù)調(diào)用 和線程沒有任何關(guān)系, .start會走底層 會走系統(tǒng)層 最終調(diào)度到 run函數(shù),這才是線程。

【面試題】 如何控制線程的執(zhí)行順序 ?

答:join來控制cpu讓指定線程獲取執(zhí)行權(quán)力,能夠做到順序執(zhí)行

【面試題】 多線程中的并行和并發(fā)是什么?

答:四個車道,四輛車并行的走,就是并行,  四個車道中,五秒鐘多少的車流量,多少的吞吐量

【面試題】在Java中能不能指定CPU去執(zhí)行某個線程?

答:不能,Java是做不到的,唯一能夠去干預(yù)的就是C語言調(diào)用內(nèi)核的API去指定才行,這個你回答的話,面試官會覺得你研究點東西

【面試題】在項目開發(fā)過程中,你會考慮Java線程優(yōu)先級嗎?

答:不會考慮優(yōu)先級,為什么呢? 因為線程的優(yōu)先級很依賴與系統(tǒng)的平臺,所以這個優(yōu)先級無法對號入座,無法做到你想象中的優(yōu)先級,屬于不穩(wěn)定,有風險

因為某些開源框架,也不可能依靠線程優(yōu)先級來,設(shè)置自己想要的優(yōu)先級順序,這個是不可靠的

例如:Java線程優(yōu)先級又十級,而此時操作系統(tǒng)優(yōu)先級只有2~3級,那么就對應(yīng)不上

【面試題】sleep和wait又什么區(qū)別?

答:sleep是休眠,等休眠時間一過,才有執(zhí)行權(quán)的資格,注意:只是又有資格了,并不代表馬上就會被執(zhí)行,什么時候又執(zhí)行起來,取決于操作系統(tǒng)調(diào)度

wait是等待,需要人家來喚醒,喚醒后,才有執(zhí)行權(quán)的資格,注意:只是又有資格了,并不代表馬上就會被執(zhí)行,什么時候又執(zhí)行起來,取決于操作系統(tǒng)調(diào)度

含義的不同:sleep無條件可以休眠, wait是某些原因與條件需要等待一下(資源不滿足)

【面試題】 在Java中能不能強制中斷線程的執(zhí)行?

答:雖然提供了 stop 等函數(shù),但是此函數(shù)不推薦使用,為什么因為這種暴力的方式,很危險,例如:下載圖片5kb,只下載了4kb 等

我們可以使用interrupt來處理線程的停止,但是注意interrupt只是協(xié)作式的方式,并不能絕對保證中斷,并不是搶占式的

【面試題】 如何讓出當前線程的執(zhí)行權(quán)?

答:yield方法,只在JDK某些實現(xiàn)才能看到,是讓出執(zhí)行權(quán)

【面試題】sleep,wait,到底那個函數(shù)才會 清除中斷標記?

答:sleep在拋出異常的時候,捕獲異常之前,就已經(jīng)清除

    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    亚洲国产综合久久天堂| 日本人妻中出在线观看| 国产又粗又长又大高潮视频| 色好吊视频这里只有精| 久热人妻中文字幕一区二区| 插进她的身体里在线观看骚| 色综合久久六月婷婷中文字幕| 日韩欧美黄色一级视频| 国产精品蜜桃久久一区二区| 国产亚洲精品一二三区| 黄色片一区二区三区高清| 国产一级片内射视频免费播放| 午夜精品一区二区三区国产| 午夜精品一区二区三区国产| 久久人妻人人澡人人妻| 亚洲男人的天堂就去爱| 亚洲高清一区二区高清| 欧美精品女同一区二区| 国产精品超碰在线观看| 日韩人妻毛片中文字幕| 有坂深雪中文字幕亚洲中文| 亚洲国产成人爱av在线播放下载| 不卡中文字幕在线视频| 天海翼高清二区三区在线| 国产福利一区二区三区四区| 成人免费在线视频大香蕉| 东北老熟妇全程露脸被内射 | 黑丝袜美女老师的小逼逼| 欧美日韩精品视频在线| 超碰在线免费公开中国黄片| 欧洲一区二区三区自拍天堂| 视频在线免费观看你懂的| 九九热这里有精品20| 日韩一级一片内射视频4k| 国产91色综合久久高清| 欧美日韩国产福利在线观看| 国产乱人伦精品一区二区三区四区| 视频在线免费观看你懂的 | 欧美日韩在线第一页日韩| 亚洲午夜精品视频观看| 婷婷色国产精品视频一区|