0

同時に(同時に)開始したい2つのスレッドt1とt2があり、それぞれSystem.out.println()がコンソールへの印刷を呼び出してから、同時に終了します。

これを達成する方法を、エグゼキュータフレームワークを介して達成できるかどうかをアドバイスしてください。私はエグゼキュータフレームワーク自体の助けを借りてそれをやろうとしています..!!

4

1 に答える 1

6

これを行うには、 2つCountDownLatchのesまたはaCyclicBarrierを使用できます。例えば:

final CountDownLatch start = new CountDownLatch(2);
final CountDownLatch end = new CountDownLatch(2);

Runnable r1 = new Runnable() {
    @Override
    public void run() {
        try {
            start.countDown();
            start.await();
            System.out.println("In 1");
            end.countDown();
            end.await();
        } catch (InterruptedException ex) {
            Thread.currentThread().interrupt(); //restore interruption status
        }
    }
};
Runnable r2 = new Runnable() {
    @Override
    public void run() {
        try {
            start.countDown();
            start.await();
            System.out.println("In 2");
            end.countDown();
            end.await();
        } catch (InterruptedException ex) {
            Thread.currentThread().interrupt(); //restore interruption status
        }
    }
};
于 2012-09-11T16:33:36.650 に答える