對(duì)于此問(wèn)題,在我的書(shū)中深入討論過(guò)的一個(gè)解決方法是,使用一個(gè)Active_object。 active 對(duì)象是可以接收異步請(qǐng)求的對(duì)象,它在接收到請(qǐng)求后的一段時(shí)間內(nèi)以后臺(tái)方式得以處理。在 Java 編程語(yǔ)言中,一個(gè)請(qǐng)求可被封裝在一個(gè)對(duì)象中。例如,你可以把一個(gè)通過(guò) Runnable 接口實(shí)現(xiàn)的實(shí)例傳送給此 active 對(duì)象,該接口的 run() 方法封裝了需要完成的工作。該 runnable 對(duì)象被此 active 對(duì)象排入到隊(duì)列中,當(dāng)輪到它執(zhí)行時(shí),active 對(duì)象使用一個(gè)后臺(tái)線程來(lái)執(zhí)行它。
在一個(gè) active 對(duì)象上運(yùn)行的異步信息實(shí)際上是同步的,因?yàn)樗鼈儽灰粋€(gè)單一的服務(wù)線程按順序從隊(duì)列中取出并執(zhí)行。因此,使用一個(gè) active 對(duì)象以一種更為過(guò)程化的模型可以消除大多數(shù)的同步問(wèn)題。
既使空的 final 在每個(gè)構(gòu)造函數(shù)中都有初始化,還是會(huì)出現(xiàn)這個(gè)錯(cuò)誤信息。自從在 1.1 版本中引入內(nèi)部類(lèi)后,編譯器中一直有這個(gè)錯(cuò)誤。在此版本中(三年以后),這個(gè)錯(cuò)誤依然存在。現(xiàn)在,該是改正這個(gè)錯(cuò)誤的時(shí)候了。