我有一個服務器/客戶端應用程序,它使用多個線程來處理系統的各個方面。每當新客戶端連接到服務器時,將在管理服務器和客戶端之間的通信的對象ClientHandler
中創建一個新線程。 一個單獨的線程作爲一個Calendar
對象的倒計時時鐘,該對象從服務器啓動時開始,並且在這裏我希望進行某種線程間通信。提醒事件/操作的其他線程
這是當期限已過檢測代碼:
//Retrieve current date and time...
Calendar now = Calendar.getInstance();
//deadline not yet reached
while(now.before(deadline))
{
try
{
//wait a second and try again
sleep(1000);
}
catch (InterruptedException intEx)
{
intEx.printStackTrace();
}
//Update current date and time...
now = Calendar.getInstance();
//run loop again
}
立即這個循環結束後,我想以某種方式通知的最後期限已經達到其他線程。
我對如何做到這一點有點遺憾。在我的程序的其他部分,我使用Socket
s和Scanner/PrintWriter
作爲輸入和輸出。這在這裏可能是可能的,但似乎是一個相當複雜的做事方式。
我做了一些研究,看到Java方法wait()
和notify()
被普遍使用。他們會盡一切可能實現我所追求的目標嗎?如果沒有,是否有比我之前提到的更好的方法?
如何使用Obser ver模式來通知訂戶,在這種情況下會是其他線程? –
嗨,我相對較新的Java,所以我不熟悉這個功能。你介意闡述嗎? @WillyduPreez – marcuthh