操作系統(tǒng)面試考點(diǎn) 1、明白并發(fā)和并行的區(qū)別對(duì)理解操作系統(tǒng)很重要 并發(fā):指兩個(gè)或多個(gè)事件在同一時(shí)間間隔內(nèi)發(fā)生 并行: 指兩個(gè)或多個(gè)事件在同一時(shí)刻發(fā)生 操作系統(tǒng)中的程序可以并發(fā)執(zhí)行,而不是并行執(zhí)行。 2、程序、進(jìn)程以及線程的區(qū)別 從定義來(lái)看 程序:程序是對(duì)算法的描述,一段靜態(tài)的代碼序列 進(jìn)程:程序在一個(gè)
Read More
千萬(wàn)千萬(wàn)不要把java中的線程狀態(tài)和操作系統(tǒng)中的線程狀態(tài)弄混淆,如果線程狀態(tài)沒有搞清楚,并發(fā)編程就無(wú)從談起。 在Java JDK類庫(kù)中的Thread類里,只定義了6種狀態(tài)。 Blocked:阻塞狀態(tài),等待鎖的釋放 New:未啟動(dòng)狀態(tài) Runnable:可運(yùn)行狀態(tài),包括(運(yùn)行和就緒狀態(tài)) Termin
Read More
線程讓步Thread.yield():當(dāng)前線程已經(jīng)把重要的部分執(zhí)行完畢,此時(shí)可以切換線程。 class MyThread implements Runnable { public void run() { int i = 0; while(i < 6) { System.out.println(Th
Read More
Thread.sleep(ms):當(dāng)前線程進(jìn)入Time—Wait狀態(tài),并等待指定時(shí)間。 與wait的區(qū)別:wait只能用于同步塊中,wait釋放鎖。 class MyThread implements Runnable { public void run() { int i = 0; while(i
Read More
join():當(dāng)前線程等待子線程終止 class MyThread implements Runnable { public void run() { int i = 0; while(i < 100) { System.out.println(Thread.currentThread() + "
Read More
synchronized關(guān)鍵字定義同步代碼塊活方法,進(jìn)入同步代碼塊的線程獲得該對(duì)象的鎖。鎖沒有釋放,其他線程阻塞,鎖釋放,其他線程爭(zhēng)鎖。 實(shí)例鎖:synchronized修飾非靜態(tài)方法,線程獲得普通對(duì)象的鎖。 類鎖:synchronized修飾靜態(tài)方法,線程獲得Class對(duì)象的鎖。 class My
Read More
1、Interrupt() 當(dāng)該線程處于Runnable狀態(tài)時(shí),調(diào)用Interrupt()設(shè)置該線程中斷標(biāo)志 當(dāng)線程處于Wait狀態(tài)時(shí),調(diào)用interrupt()該線程拋出異常并清除中斷標(biāo)志 當(dāng)線程處于Blocked的狀態(tài)時(shí),調(diào)用interruput(),線程不響應(yīng)中斷,線程會(huì)在獲得鎖后自中斷一次
Read More
1、JAVA內(nèi)存模型(注意與JVM內(nèi)存模型的區(qū)別) 內(nèi)存模型:定義一組規(guī)范,圍繞可見性、原子性、有序性定義變量的訪問方式,屏蔽軟硬件差異達(dá)到內(nèi)存一致性效果。 2、volatile關(guān)鍵字 可見性:內(nèi)存屏障保證寫操作立刻刷新緩存,讀操作要從內(nèi)存讀取最新值到工作內(nèi)存 禁止指令重排:(針對(duì)普通無(wú)鎖的全局變量
Read More
1、樂觀鎖與悲觀鎖 悲觀鎖:假設(shè)一定會(huì)發(fā)生問題,所以要進(jìn)行加鎖。 樂觀鎖:假設(shè)不會(huì)發(fā)生問題,邊運(yùn)行邊檢測(cè)沖突,發(fā)生沖突采取補(bǔ)償措施,一般是不斷重試。(CAS) 樂觀鎖適用于發(fā)生沖突頻率不高的情況,悲觀鎖適用于發(fā)生沖突頻率高情況(使用樂觀鎖就會(huì)不斷重試開銷很大) 2、公平鎖與非公平鎖 公平鎖:多線程在
Read More