私のプログラムでは、新しい値がトリガーされるたびにリスナーの束を更新するクラスを作成しました。そのため私はSingleThreadExecutor
を使用していますが、この例ではより明確にする必要があります。私はそのようにそれを実行すると、それは意味を成してない、についてです心配しています何:ExecutorServiceを使用して最も効果的な方法
Class Update() {
ExecutorService svc = Executors.newSingleThreadExecutor();
svc.execute(new Runnable() {
public void run() {
if(!theListeners.isEmpty()) {
for(IgpsdListener l : theListeners) {
l.update(jsonObject);
}
}
}
});
私は、スレッドの作成はJAVAで非常に高価アクションですので、私はそれを正しく使用している場合、私は疑問に思っていることを、聞きました。つまり、毎回新しいRunnable
オブジェクトが作成されますか?エグゼキュータでさえ、唯一のスレッドしか使用しません。
ご協力いただきありがとうございます。 nyyrikki
に私が実行し、外部に 'もし'移動します()。何もしないタスクを追加する点はありません。私はあなたがあなたのエグゼキュータを再利用していると仮定し、各タスクごとに作成しないでください。 –
エグゼキュータは1回だけ作成されます。あなたが言及したことは完全に意味があります。 'if()'を 'execute()'の外に移動すると、イベントはリスナーがイベントに登録していない場合でも実行されません。それを見ていない、素敵な...ありがとう! – nyyrikki