2012-09-25 189 views
1

我有一些插件類型類,其線程安全和異常處理我不能保證(假設將來由第三方編碼)。主應用程序只通過「插件」接口知道這些,而不關心他們在內部做什麼。除了由於這些插件類中拋出的某個異常或線程鎖定導致應用程序不能崩潰或凍結。插件類不依賴於主應用程序,只需從主應用程序執行一些命令即可。只有兩個其他的相互作用是:異常和線程安全沙箱

  1. 異步任務完成時,調用接口的方法(由主應用程序提供,作爲方法arg)。
  2. 提供了用於配置的GUI。 (主要應用程序只是簡單地詢問並將其從JPanel容器中加入/移除,僅此而已)

有什麼方法可以實現這個目標?我正在考慮對實際插件方法使用Synchronized,try-catch調用的包裝。 AOP攔截器可以在這裏使用嗎?任何其他方式來沙箱Java中的類?

+0

嗯也許「如果插件斷裂,這是插件作者的錯」 buckit的想法是一個很好的理念在這裏 – jozefg

+0

你的問題太模糊。插件是否訪問核心應用程序類?它可以在它自己的線程中運行,還是它是一些UI應用程序,其中的插件代碼也在UI線程中運行? –

+0

@JBNizet更新了問題。 –

回答

0

事實證明,你可以保護你的大部分過程中,但是當你同意出現在您的UI線程插件的用戶界面,它絕對可以引起程序崩潰。