大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專(zhuān)注Java教育14年 全國(guó)咨詢/投訴熱線:400-8080-105
動(dòng)力節(jié)點(diǎn)LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁(yè) 學(xué)習(xí)攻略 Java學(xué)習(xí) Java并發(fā)基礎(chǔ)常見(jiàn)面試題總結(jié)

Java并發(fā)基礎(chǔ)常見(jiàn)面試題總結(jié)

更新時(shí)間:2020-08-28 15:39:49 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽2806次


何為線程?


線程與進(jìn)程相似,但線程是一個(gè)比進(jìn)程更小的執(zhí)行單位。一個(gè)進(jìn)程在其執(zhí)行的過(guò)程中可以產(chǎn)生多個(gè)線程。與進(jìn)程不同的是同類(lèi)的多個(gè)線程共享進(jìn)程的堆和方法區(qū)資源,但每個(gè)線程有自己的程序計(jì)數(shù)器、虛擬機(jī)棧和本地方法棧,所以系統(tǒng)在產(chǎn)生一個(gè)線程,或是在各個(gè)線程之間作切換工作時(shí),負(fù)擔(dān)要比進(jìn)程小得多,也正因?yàn)槿绱耍€程也被稱(chēng)為輕量級(jí)進(jìn)程。


Java程序天生就是多線程程序,我們可以通過(guò)JMX來(lái)看一下一個(gè)普通的Java程序有哪些線程,代碼如下。

public class MultiThread {
	public static void main(String[] args) {
		// 獲取 Java 線程管理 MXBean
	ThreadMXBean threadMXBean = ManagementFactory.getThreadMXBean();
		// 不需要獲取同步的 monitor 和 synchronizer 信息,僅獲取線程和線程堆棧信息
		ThreadInfo[] threadInfos = threadMXBean.dumpAllThreads(false, false);
		// 遍歷線程信息,僅打印線程 ID 和線程名稱(chēng)信息
		for (ThreadInfo threadInfo : threadInfos) {
			System.out.println("[" + threadInfo.getThreadId() + "] " + threadInfo.getThreadName());
		}
	}
}


上述程序輸出如下(輸出內(nèi)容可能不同,不用太糾結(jié)下面每個(gè)線程的作用,只用知道 main 線程執(zhí)行 main 方法即可):


[5] Attach Listener //添加事件

[4] Signal Dispatcher // 分發(fā)處理給 JVM 信號(hào)的線程

[3] Finalizer //調(diào)用對(duì)象 finalize 方法的線程

[2] Reference Handler //清除 reference 線程

[1] main //main 線程,程序入口


從上面的輸出內(nèi)容可以看出:一個(gè) Java 程序的運(yùn)行是 main 線程和多個(gè)其他線程同時(shí)運(yùn)行。


程序計(jì)數(shù)器為什么是私有的?


程序計(jì)數(shù)器主要有下面兩個(gè)作用:


字節(jié)碼解釋器通過(guò)改變程序計(jì)數(shù)器來(lái)依次讀取指令,從而實(shí)現(xiàn)代碼的流程控制,如:順序執(zhí)行、選擇、循環(huán)、異常處理。


在多線程的情況下,程序計(jì)數(shù)器用于記錄當(dāng)前線程執(zhí)行的位置,從而當(dāng)線程被切換回來(lái)的時(shí)候能夠知道該線程上次運(yùn)行到哪兒了。


需要注意的是,如果執(zhí)行的是native方法,那么程序計(jì)數(shù)器記錄的是undefined地址,只有執(zhí)行的是Java代碼時(shí)程序計(jì)數(shù)器記錄的才是下一條指令的地址。


所以,程序計(jì)數(shù)器私有主要是為了線程切換后能恢復(fù)到正確的執(zhí)行位置。


虛擬機(jī)棧和本地方法棧為什么是私有的?


**虛擬機(jī)棧:**每個(gè)Java方法在執(zhí)行的同時(shí)會(huì)創(chuàng)建一個(gè)棧幀用于存儲(chǔ)局部變量表、操作數(shù)棧、常量池引用等信息。從方法調(diào)用直至執(zhí)行完成的過(guò)程,就對(duì)應(yīng)著一個(gè)棧幀在Java虛擬機(jī)棧中入棧和出棧的過(guò)程。


**本地方法棧:**和虛擬機(jī)棧所發(fā)揮的作用非常相似,區(qū)別是:虛擬機(jī)棧為虛擬機(jī)執(zhí)行Java方法(也就是字節(jié)碼)服務(wù),而本地方法棧則為虛擬機(jī)使用到的Native方法服務(wù)。在HotSpot虛擬機(jī)中和Java虛擬機(jī)棧合二為一。


所以,為了保證線程中的局部變量不被別的線程訪問(wèn)到,虛擬機(jī)棧和本地方法棧是線程私有的。


說(shuō)說(shuō)并發(fā)與并行的區(qū)別?


并發(fā):同一時(shí)間段,多個(gè)任務(wù)都在執(zhí)行(單位時(shí)間內(nèi)不一定同時(shí)執(zhí)行);


并行:?jiǎn)挝粫r(shí)間內(nèi),多個(gè)任務(wù)同時(shí)執(zhí)行。


為什么要使用多線程呢?


先從總體上來(lái)說(shuō):


從計(jì)算機(jī)底層來(lái)說(shuō):線程可以比作是輕量級(jí)的進(jìn)程,是程序執(zhí)行的最小單位,線程間的切換和調(diào)度的成本遠(yuǎn)遠(yuǎn)小于進(jìn)程。另外,多核CPU時(shí)代意味著多個(gè)線程可以同時(shí)運(yùn)行,這減少了線程上下文切換的開(kāi)銷(xiāo)。


從當(dāng)代互聯(lián)網(wǎng)發(fā)展趨勢(shì)來(lái)說(shuō):現(xiàn)在的系統(tǒng)動(dòng)不動(dòng)就要求百萬(wàn)級(jí)甚至千萬(wàn)級(jí)的并發(fā)量,而多線程并發(fā)編程正是開(kāi)發(fā)高并發(fā)系統(tǒng)的基礎(chǔ),利用好多線程機(jī)制可以大大提高系統(tǒng)整體的并發(fā)能力以及性能。


再深入到計(jì)算機(jī)底層來(lái)探討:


單核時(shí)代:在單核時(shí)代多線程主要是為了提高CPU和IO設(shè)備的綜合利用率。舉個(gè)例子:當(dāng)只有一個(gè)線程的時(shí)候會(huì)導(dǎo)致CPU計(jì)算時(shí),IO設(shè)備空閑;進(jìn)行IO操作時(shí),CPU空閑。我們可以簡(jiǎn)單地說(shuō)這兩者的利用率目前都是50%左右。但是當(dāng)有兩個(gè)線程的時(shí)候就不一樣了,當(dāng)一個(gè)線程執(zhí)行CPU計(jì)算時(shí),另外一個(gè)線程可以進(jìn)行IO操作,這樣兩個(gè)的利用率就可以在理想情況下達(dá)到100%了。


多核時(shí)代:多核時(shí)代多線程主要是為了提高CPU利用率。舉個(gè)例子:假如我們要計(jì)算一個(gè)復(fù)雜的任務(wù),我們只用一個(gè)線程的話,CPU只會(huì)一個(gè)CPU核心被利用到,而創(chuàng)建多個(gè)線程就可以讓多個(gè)CPU核心被利用到,這樣就提高了CPU的利用率。


java并發(fā)筆試題


以上就是動(dòng)力節(jié)點(diǎn)java培訓(xùn)機(jī)構(gòu)的小編針對(duì)“Java并發(fā)基礎(chǔ)常見(jiàn)面試題總結(jié)”的內(nèi)容進(jìn)行的回答,希望對(duì)大家有所幫助,如有疑問(wèn),請(qǐng)?jiān)诰€咨詢,有專(zhuān)業(yè)老師隨時(shí)為你服務(wù)。


提交申請(qǐng)后,顧問(wèn)老師會(huì)電話與您溝通安排學(xué)習(xí)

  • 全國(guó)校區(qū) 2025-04-24 搶座中
  • 全國(guó)校區(qū) 2025-05-15 搶座中
  • 全國(guó)校區(qū) 2025-06-05 搶座中
  • 全國(guó)校區(qū) 2025-06-26 搶座中
免費(fèi)課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 美欧毛片 | 国产牛牛 | 四虎avtom影院 | 男女啪啪猛烈免费网站 | 日韩欧美 在线播放 | 全免费午夜一级毛片一级毛 | 国产精品女仆装在线播放 | 国产美女久久精品香蕉69 | 亚洲高清综合 | 天天夜夜骑 | 免费视频爱爱 | 最新福利在线 | 91久久精品视频 | 美女超逼 | 亚洲综合春色另类久久 | 国产91在线 | 日韩 | 本日黄色| 欧美啪啪毛片一区二区 | 欧美怡红院免费全部视频 | 国产一区二区在线不卡 | 亚欧aⅴ天堂在线 | 国产毛片一区二区三区 | 日本高清无吗免费播放 | 久久精品欧美一区二区 | 涩涩免费视频 | 亚洲欧美另类视频 | 国产精品原创永久在线观看 | 亚洲高清在线播放 | 免费色视频网站 | 欧美毛片在线播放观看 | 欧美成人免费夜夜黄啪啪 | 狠狠狠狠狠狠狠狠狠狠 | 天天夜碰日日摸日日澡 | 久久久久久综合对白国产 | 天天碰天天摸天天操 | 日韩黄色精品 | 日韩欧美亚洲综合 | 国产伦精品一区二区三区网站 | 久久综合九色综合欧美狠狠 | 精品综合久久久久久97超人 | 欧美一级久久久久久久大 |