我遇到以下問題。鑑於Observer模式一個接口事件通知:Java:observer-pattern在新線程中通知
public interface EventNotifier {
void newEvent(final String value);
}
,A級,將實現該接口,可以在另一個類,它調用經常方法newEvent註冊。接口由外部庫提供,所以我無法更改它。到現在爲止我用匿名類來實現它:
Thread t = new Thread(new Runnable() {
@Override
public void run() {
watcher = new Watcher(new EventNotifier() {
@Override
public void newEvent(String value) {
//do some stuff
//will be called more than 20 times per second
}
});
});
t.start();
爲了更好的代碼的可讀性,我想這個匿名類暴露到一個新的類,它繼承Thread(因爲處理應平行於其他事情)。如何寫一個線程,它什麼也不做(沒有無盡的循環等),但是等待調用newEvent方法?問題是,newEvent每秒會被調用超過20次,所以我無法爲每個調用啓動一個新線程,但整個事情應該在一個線程中。
我希望你得到這個問題,有人可以幫助我。
在當前設計的T優有線程註冊您的聽衆,然後終止,我覺得這是不是你想要的,不是嗎?你是否想要調用newEvent - 「做一些事情」 - 在單獨的線程中處理?因爲現在它們在運行其他組件的線程中處理。 – 2011-12-17 13:05:30