解决方案 »

  1.   

    我在想能不能在外围再用一个count=1的CountDownLatch。
    再把我那个类方法
    把现在写在一个有返回值的方法里。
    然后外围程序用callable-future方式调用,
    future有返回值了,就让CountDownLatch执行countDown()。
    countDown调用完后,再执行初始化那个类的代码。
    如此反复。不知道行不行。对了,那个exec.shutdown也应该放在一个得到了future的结果之后再调用,
    也就是把那个匿名runnable接口对象返回一个值....好乱啊!!
    还有什么别的实现方法吗?
      

  2.   


    while(true){
        ExecutorService exec = Executors.newFixedThreadPool(2);
             
            Task t1 = new Task(barrier, 1, 3000);
            Task t2 = new Task(barrier, 2, 1000);
             
            exec.submit(t1); 
            exec.submit(t2); 
             
            exec.shutdown();
            while(true){        
                if(exec.isTerminated()){ break;} else(Thread.sleep(100);)
            }
    }
      

  3.   

    public CyclicBarrierTest3() { CyclicBarrier barrier = new CyclicBarrier(3, new Runnable() { @Override
    public void run() {
    System.out.println("所有线程都执行完了!");
    }
    }); ExecutorService exec = Executors.newFixedThreadPool(2); for(int i=0;i<10;i++){//循环10次试试
    barrier.reset();
    Task t1 = new Task(barrier, 1, 3000);
    Task t2 = new Task(barrier, 2, 1000);

    exec.submit(t1);
    exec.submit(t2);
    try {
                    barrier.await();
                    System.out.println(now() + "一次循环已经搞定啦。");
                } catch (InterruptedException e) {
                } catch (BrokenBarrierException e) {
                }
    }
    exec.shutdown();
    }
      

  4.   

    CyclicBarrier这个事个什么东西,不明白,没有用过的哦