10
A
回答
16
它解決了子類忘記調用超類的finalize
方法的問題。此模式通過將超出的finalize
的額外實例附加到您的超類中來工作。這樣,如果超級類超出範圍,則附加實例也將超出範圍,這將觸發執行finalize
,這又會調用封閉類的finalize
。
這裏是一個小片段,展示在行動守護模式:
public class Parent {
public static void main(final String[] args) throws Exception {
doIt();
System.gc();
Thread.sleep(5000); // 5 sec sleep
}
@SuppressWarnings("unused")
private final Object guardian = new Object() {
@Override protected void finalize() {
doFinalize();
}
};
private void doFinalize() {
System.out.println("Finalize of class Parent");
}
public static void doIt() {
Child c = new Child();
System.out.println(c);
}
}
class Child extends Parent {
// Note, Child class does not call super.finalize() but the resources held by the
// parent class will still get cleaned up, thanks to the guardian pattern
@Override protected void finalize() {
System.out.println("Finalize of class Child");
}
}
相關問題
- 1. 關於終結者守護進程
- 2. 如何在Heroku中守護Sidekiq工作者?
- 3. Java終結者監護人似乎不工作?
- 4. java中的工作者和守護進程線程
- 5. Emacs goto-line在終結者不工作
- 6. 在printf的終結者操作者的操作
- 7. Java進程崩潰 - Java終結者
- 8. Ruby如何創建將產生多個工作者的守護進程
- 9. 月份和守護者的枚舉類
- 10. CodeDom的終結者?
- 11. 如何製作工藝守護
- 12. 如何創建一個Python插槽聽者守護進程
- 13. 在java中製作unix守護進程
- 14. 鮑爾的作者田野原創作者或包維護者
- 15. 如何守護Java程序?
- 16. 在基本塊中找到終結者
- 17. 作爲守護進程運行追蹤者(Ruby gem)
- 18. Java包裝作爲守護
- 19. 如何從網絡工作者調用共享工作者?
- 20. 如何讓守護進程Rserve在Heroku上作爲工作者測試程序運行
- 21. gmongo MapReducer與終結者
- 22. AsyncSocket寫數據終結者
- 23. Android例外終結者
- 24. 終結者和處置
- 25. PowerShell是缺少終結者: 「
- 26. 終止一個網絡工作者
- 27. 優雅的終止工作者池
- 28. Apache的工作者配置和mod_wsgi的守護進程模式有關嗎?
- 29. 終結者:如何在分割窗格中打開標籤
- 30. 如何獲取PySpark中工作者(執行者)的數量?
還沒有使用過。也許是因爲我沒有寫完最終版。 – duffymo