0

私には3つのクラスがあり、そこから3つのサービスを開始します。これら3つのサービスは同時に開始されます。

これらの各サービスクラスには、その特定のサービスが開始されているかどうかを知るためのコールバックメソッドがあります。

同時に開始されますが、これら3つのうちどのサービスが最初に開始されるかという順序はありません。

最後のサービスの開始時に通知を受けるために使用する最善の方法を誰かに教えてもらえますか?

どんな助けでも大歓迎です。

4

1 に答える 1

1

私はそれを次のようにします:

public class CounterAndNotifier
{
    private int counter = 0;
    private int count;
    private Runnable runnable;

    public CounterAndNotifier(int count, Runnable runnable)
    {
        this.count = count;
        this.runnable = runnable;
    }

    public synchronized void incrementCounter()
    {
        counter++;
        if (counter == count) {
            runnable.run();
        }
    }
}
  1. Runnable3つのサービスすべてが開始されたら通知される必要があるを取得するクラスを作成します。
  2. このクラスは、カウンターとカウンターsynchronizedをインクリメントするメソッドを維持します。
  3. Runnable.run()カウンタをインクリメントするメソッドは、カウントがに達すると呼び出します3
  4. このクラスのオブジェクトを作成し、それを3つのサービスに渡してincrementCounter()、サービスが完了して実行されたらメソッドを呼び出します。

お役に立てれば。

于 2012-09-12T16:34:49.677 に答える