摘要:但是,實(shí)際中無(wú)法保證達(dá)到讓步的目的,因?yàn)椋尣降木€(xiàn)程可能被線(xiàn)程調(diào)度程序再次選中。結(jié)論大多數(shù)情況下,將導(dǎo)致線(xiàn)程從運(yùn)行狀態(tài)轉(zhuǎn)到可運(yùn)行狀態(tài),但有可能沒(méi)有效果。
join
join方法相當(dāng)于讓出執(zhí)行權(quán),thread.join把指定的線(xiàn)程加入到當(dāng)前線(xiàn)程,可以將兩個(gè)交替執(zhí)行的線(xiàn)程合并為順序執(zhí)行的線(xiàn)程。比如在線(xiàn)程B中調(diào)用了線(xiàn)程A的Join()方法,直到線(xiàn)程A執(zhí)行完畢后,才會(huì)繼續(xù)執(zhí)行線(xiàn)程B。
@RequestMapping("test-join") public void testJoin() throws InterruptedException { System.out.println("主線(xiàn)程start"); Thread thread = new Thread(()->{ for (int i = 0; i < 100; i++) { System.out.println("i = " + i); } }); thread.start(); thread.join(); for (int j = 0; j < 100; j++) { System.out.println("j = " + j); } System.out.println("主線(xiàn)程end"); }
結(jié)果:
主線(xiàn)程start
i循環(huán)
j循環(huán)
主線(xiàn)程end
yieldThread.yield()方法的作用:暫停當(dāng)前正在執(zhí)行的線(xiàn)程,并執(zhí)行其他線(xiàn)程。(可能沒(méi)有效果)
yield()讓當(dāng)前正在運(yùn)行的線(xiàn)程回到可運(yùn)行狀態(tài),以允許具有相同優(yōu)先級(jí)的其他線(xiàn)程獲得運(yùn)行的機(jī)會(huì)。因此,使用yield()的目的是讓具有相同優(yōu)先級(jí)的線(xiàn)程之間能夠適當(dāng)?shù)妮啌Q執(zhí)行。但是,實(shí)際中無(wú)法保證yield()達(dá)到讓步的目的,因?yàn)椋尣降木€(xiàn)程可能被線(xiàn)程調(diào)度程序再次選中。
結(jié)論:大多數(shù)情況下,yield()將導(dǎo)致線(xiàn)程從運(yùn)行狀態(tài)轉(zhuǎn)到可運(yùn)行狀態(tài),但有可能沒(méi)有效果。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/74266.html
摘要:通知任一一個(gè)進(jìn)入等待狀態(tài)的線(xiàn)程,通知所有讓調(diào)用線(xiàn)程阻塞在這個(gè)方法上,直到的線(xiàn)程完全執(zhí)行完畢,調(diào)用線(xiàn)程才會(huì)繼續(xù)執(zhí)行。通知調(diào)度器,主動(dòng)讓出對(duì)的占用。 多線(xiàn)程在開(kāi)發(fā)知識(shí)中是一個(gè)很重要的部分,然而實(shí)際生產(chǎn)中卻很少遇到真正需要自己去處理多線(xiàn)程編程里的那些復(fù)雜細(xì)節(jié)和問(wèn)題,因?yàn)楹芏鄷r(shí)候,都有一套架構(gòu)或者一些框架幫大部分業(yè)務(wù)程序員隱藏了多線(xiàn)程的細(xì)節(jié),大多時(shí)候只需要簡(jiǎn)單的實(shí)現(xiàn)各種業(yè)務(wù)邏輯即可。 今天來(lái)理...
摘要:告訴當(dāng)前執(zhí)行的線(xiàn)程為線(xiàn)程池中其他具有相同優(yōu)先級(jí)的線(xiàn)程提供機(jī)會(huì)。不能保證會(huì)立即使當(dāng)前正在執(zhí)行的線(xiàn)程處于可運(yùn)行狀態(tài)。當(dāng)達(dá)到超時(shí)時(shí)間時(shí),主線(xiàn)程和是同樣可能的執(zhí)行者候選。下一篇并發(fā)編程線(xiàn)程安全性深層原因 Thread 使用Java的同學(xué)對(duì)Thread應(yīng)該不陌生了,線(xiàn)程的創(chuàng)建和啟動(dòng)等這里就不講了,這篇主要講幾個(gè)容易被忽視的方法以及線(xiàn)程狀態(tài)遷移。 wait/notify/notifyAll 首先我...
摘要:線(xiàn)程需要避免竟態(tài),死鎖以及很多其他共享狀態(tài)的并發(fā)性問(wèn)題。用戶(hù)線(xiàn)程在前臺(tái),守護(hù)線(xiàn)程在后臺(tái)運(yùn)行,為其他前臺(tái)線(xiàn)程提供服務(wù)。當(dāng)所有前臺(tái)線(xiàn)程都退出時(shí),守護(hù)線(xiàn)程就會(huì)退出。線(xiàn)程阻塞等待獲取某個(gè)對(duì)象鎖的訪(fǎng)問(wèn)權(quán)限。 1、多線(xiàn)程介紹 多線(xiàn)程優(yōu)點(diǎn) 資源利用率好 程序設(shè)計(jì)簡(jiǎn)單 服務(wù)器響應(yīng)更快 多線(xiàn)程缺點(diǎn) 設(shè)計(jì)更復(fù)雜 上下文切換的開(kāi)銷(xiāo) 增加資源消耗線(xiàn)程需要內(nèi)存維護(hù)本地的堆棧,同時(shí)需要操作系統(tǒng)資源管理線(xiàn)程。...
摘要:目錄介紹問(wèn)題匯總具體問(wèn)題好消息博客筆記大匯總年月到至今,包括基礎(chǔ)及深入知識(shí)點(diǎn),技術(shù)博客,學(xué)習(xí)筆記等等,還包括平時(shí)開(kāi)發(fā)中遇到的匯總,當(dāng)然也在工作之余收集了大量的面試題,長(zhǎng)期更新維護(hù)并且修正,持續(xù)完善開(kāi)源的文件是格式的同時(shí)也開(kāi)源了生活博客,從年 目錄介紹 00.Java問(wèn)題匯總 01.具體問(wèn)題 好消息 博客筆記大匯總【16年3月到至今】,包括Java基礎(chǔ)及深入知識(shí)點(diǎn),Android技...
摘要:本文會(huì)以引出問(wèn)題為主,后面有時(shí)間的話(huà),筆者陸續(xù)會(huì)抽些重要的知識(shí)點(diǎn)進(jìn)行詳細(xì)的剖析與解答。敬請(qǐng)關(guān)注服務(wù)端思維微信公眾號(hào),獲取最新文章。 原文地址:梁桂釗的博客博客地址:http://blog.720ui.com 這里,筆者結(jié)合自己過(guò)往的面試經(jīng)驗(yàn),整理了一些核心的知識(shí)清單,幫助讀者更好地回顧與復(fù)習(xí) Java 服務(wù)端核心技術(shù)。本文會(huì)以引出問(wèn)題為主,后面有時(shí)間的話(huà),筆者陸續(xù)會(huì)抽些重要的知識(shí)點(diǎn)進(jìn)...
閱讀 3559·2021-10-09 09:43
閱讀 6172·2021-09-07 10:15
閱讀 2757·2019-08-30 14:03
閱讀 3087·2019-08-29 11:01
閱讀 1724·2019-08-29 10:56
閱讀 1087·2019-08-28 17:52
閱讀 3508·2019-08-26 11:42
閱讀 2563·2019-08-26 10:33