2009-04-15 155 views
4

有一個控制檯應用程序,一個接受來自客戶端的多個連接的服務器,是否有可能在關閉的應用程序上有一個監聽器或一個事件?在這種情況下,我希望告訴所有連接的客戶端在應用程序真正關閉之前輕輕斷開連接。如何在Java中處理關閉的應用程序事件?

任何解決方案?謝謝!

回答

7

你想用一個關閉掛鉤:

Runtime.getRuntime().addShutdownHook(theHookThread); 

所以,當JVM關閉線程將被運行,見here瞭解詳情。

+0

通過快速搜索,我找到了這篇文章(http://www.onjava.com/pub/a/onjava/2003/03/26/shutdownhook.html?page=1),這正是我正在尋找。拜託你! – elbaid 2009-04-15 12:03:06

0

如果通過關閉應用程序,您的意思是操作系統會終止服務器進程?

在這種情況下,服務器無法知道它正在被殺死。它會丟棄現有的連接。

如果通過關閉應用程序,您可以爲sys admin手動關閉服務器(可能通過在服務器控制檯鍵入「exit」)提供一種方法。然後關閉事件將是一個自定義事件,您將不得不編碼偵聽器並通知所有人服務器正在關閉。在這種情況下,它是可能的。

嘗試添加有關您的服務器如何構建或如何工作的更多細節。

相關問題