私は以下の問題があります。 ObserverパターンのためのインタフェースEventNotifier考える:Java:オブザーバーパターンが新しいスレッドで通知される
public interface EventNotifier {
void newEvent(final String value);
}
このインタフェースを実装するクラス、メソッド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();
を(取り扱いが他のものに平行でなければならないので)私はスレッドを拡張する新しいクラス、にこの匿名クラスを公開したいと思います。
スレッドを作成するにはどうすればよいですか(無限ループはありません)、newEventメソッドの呼び出しを待っていますか?問題は、newEventは1秒間に20回以上呼び出されるため、呼び出しごとに新しいスレッドを開始することはできませんが、すべてがスレッド内になければなりません。
あなたが問題を抱えて誰かが私を助けてくれることを願っています。
現在のデザインでは、リスナーを登録して終了するスレッドがあります。これはあなたが望むものではないと思いますか?別のスレッドで処理するためにnewEventへの呼び出しをしたいですか?これは、他のコンポーネントを実行するスレッドで処理されるためです。 –