av手机免费在线观看,国产女人在线视频,国产xxxx免费,捆绑调教一二三区,97影院最新理论片,色之久久综合,国产精品日韩欧美一区二区三区

java語言

Java設(shè)計常見問題

時間:2025-03-22 15:35:49 java語言 我要投稿
  • 相關(guān)推薦

Java設(shè)計常見問題

  導(dǎo)語:Java可以編寫桌面應(yīng)用程序、Web應(yīng)用程序、分布式系統(tǒng)和嵌入式系統(tǒng)應(yīng)用程序等。下面是Java設(shè)計的常見問題,歡迎參考!

  1、什么時候拋出InvalidMonitorStateException異常?為什么?

  調(diào)用 wait ()/notify ()/notifyAll ()中的任何一個方法時,如果當(dāng)前線程沒有獲得該對象的鎖,

  那么就會拋出 IllegalMonitorStateException 的異常

  也就是說程序在沒有執(zhí)行對象的任何同步塊或者同步方法時,

  仍然嘗試調(diào)用 wait ()/notify ()/notifyAll ()時。由于該異常是 RuntimeExcpetion 的子類,

  所以該異常不一定要捕獲(盡管你可以捕獲只要你愿意

  作為 RuntimeException,此類異常不會在 wait (),notify (),notifyAll ()的方法簽名提及。

  2、在靜態(tài)方法上使用同步時會發(fā)生什么事?

  同步靜態(tài)方法時會獲取該類的“Class”對象,所以當(dāng)一個線程進(jìn)入同步的靜態(tài)方法中時,

  線程監(jiān)視器獲取類本身的對象鎖,其它線程不能進(jìn)入這個類的任何靜態(tài)同步方法。

  它不像實例方法,因為多個線程可以同時訪問不同實例同步實例方法。

  3、當(dāng)一個同步方法已經(jīng)執(zhí)行,線程能夠調(diào)用對象上的非同步實例方法嗎?

  可以,一個非同步方法總是可以被調(diào)用而不會有任何問題。

  實際上,Java 沒有為非同步方法做任何檢查,鎖對象僅僅在同步方法或者同步代碼塊中檢查。

  如果一個方法沒有聲明為同步,即使你在使用共享數(shù)據(jù)Java照樣會調(diào)用,而不會做檢查是否安全,

  所以在這種情況下要特別小心。一個方法是否聲明為同步取決于臨界區(qū)訪問(critial section access),

  如果方法不訪問臨界區(qū)(共享資源或者數(shù)據(jù)結(jié)構(gòu))就沒必要聲明為同步的。

  4、在一個對象上兩個線程可以調(diào)用兩個不同的同步實例方法嗎?

  不能,因為一個對象已經(jīng)同步了實例方法,線程獲取了對象的對象鎖。

  所以只有執(zhí)行完該方法釋放對象鎖后才能執(zhí)行其它同步方法。

  5、什么是線程餓死,什么是活鎖?

  線程餓死和活鎖雖然不像死鎖一樣是常見的問題,但是對于并發(fā)編程的設(shè)計者來說就像一次邂逅一樣。

  當(dāng)所有線程阻塞,或者由于需要的資源無效而不能處理,不存在非阻塞線程使資源可用。

  JavaAPI 中線程活鎖可能發(fā)生在以下情形:

  當(dāng)所有線程在程序中執(zhí)行 Object.wait (0),參數(shù)為 0 的 wait 方法。

  程序?qū)l(fā)生活鎖直到在相應(yīng)的對象上有線程調(diào)用 Object.notify ()或者 Object.notifyAll ()。

  當(dāng)所有線程卡在無限循環(huán)中。


【Java設(shè)計常見問題】相關(guān)文章:

Java常見問題集錦04-13

Java編程常見問題07-19

Java編程的常見問題05-15

Java編程常見問題匯總06-12

Java工程師面試的常見問題02-10

Java中關(guān)于String類型的常見問題03-10

Java初學(xué)者的30個常見問題07-30

JAVA的數(shù)據(jù)權(quán)限設(shè)計05-28

Java單例設(shè)計模式04-25