Java 类java.util.concurrent.CyclicBarrier 实例源码

项目:QLExpress    文件:CrashTest.java   
/**
 * 版本3.0.9以下存在多线程初始化问题,这个类作为一个样例
 */
public static void main(String[] args) throws InterruptedException, BrokenBarrierException {
    System.out.println(Arrays.asList(splitWord));
    for (int j = 0; j < 1000; j++) {
        CyclicBarrier barrier = new CyclicBarrier(11, null);
        for (int i = 0; i < 10; i++) {
            Thread t = new Thread(new Worker(barrier), "t" + i);
            t.start();
        }
        Thread.sleep(500);
        barrier.await();
        while (barrier.getNumberWaiting() > 0) {
            Thread.sleep(1000);
        }
        Thread.sleep(1000);
        System.out.println(Arrays.asList(splitWord));
    }
}
项目:openjdk-jdk10    文件:CyclicBarrierTest.java   
/**
 * A reset before threads enter barrier does not throw
 * BrokenBarrierException
 */
public void testReset_NoBrokenBarrier() throws Exception {
    final CyclicBarrier c = new CyclicBarrier(3);
    c.reset();

    Thread t1 = newStartedThread(new CheckedRunnable() {
        public void realRun() throws Exception {
            c.await();
        }});
    Thread t2 = newStartedThread(new CheckedRunnable() {
        public void realRun() throws Exception {
            c.await();
        }});

    c.await();
    awaitTermination(t1);
    awaitTermination(t2);
}
项目:hadoop    文件:TestJobImpl.java   
@Test(timeout=20000)
public void testCommitJobFailsJob() throws Exception {
  Configuration conf = new Configuration();
  conf.set(MRJobConfig.MR_AM_STAGING_DIR, stagingDir);
  AsyncDispatcher dispatcher = new AsyncDispatcher();
  dispatcher.init(conf);
  dispatcher.start();
  CyclicBarrier syncBarrier = new CyclicBarrier(2);
  OutputCommitter committer = new TestingOutputCommitter(syncBarrier, false);
  CommitterEventHandler commitHandler =
      createCommitterEventHandler(dispatcher, committer);
  commitHandler.init(conf);
  commitHandler.start();

  JobImpl job = createRunningStubbedJob(conf, dispatcher, 2, null);
  completeJobTasks(job);
  assertJobState(job, JobStateInternal.COMMITTING);

  // let the committer fail and verify the job fails
  syncBarrier.await();
  assertJobState(job, JobStateInternal.FAILED);
  dispatcher.stop();
  commitHandler.stop();
}
项目:LearningOfThinkInJava    文件:CyclicBarrierDemo.java   
public static void main(String[] args) throws InterruptedException {
        final int N=10;
        Thread[] allSoldier=new Thread[N];
        boolean flag=false;
        CyclicBarrier cyclic=new CyclicBarrier(N,new BarrierRun(flag,N));

        System.out.println("集合队伍!");
        for(int i=0;i<N;++i){
            System.out.println("士兵 "+i+"报道!");
            allSoldier[i]=new Thread(new Soldier(cyclic,"士兵"+i));
            allSoldier[i].start();
//            if(i==5) {这个中断会引起一个interrupt()和n个BrokenBarrierException异常。意思是栅栏破坏掉了,
// 线程永远无法完成栅栏
//                allSoldier[1].interrupt();
//            }
        }
    }
项目:elasticsearch_my    文件:RetryTests.java   
/**
 * Blocks the named executor by getting its only thread running a task blocked on a CyclicBarrier and fills the queue with a noop task.
 * So requests to use this queue should get {@link EsRejectedExecutionException}s.
 */
private CyclicBarrier blockExecutor(String name) throws Exception {
    ThreadPool threadPool = getInstanceFromNode(ThreadPool.class);
    CyclicBarrier barrier = new CyclicBarrier(2);
    logger.info("Blocking the [{}] executor", name);
    threadPool.executor(name).execute(() -> {
        try {
            threadPool.executor(name).execute(() -> {});
            barrier.await();
            logger.info("Blocked the [{}] executor", name);
            barrier.await();
            logger.info("Unblocking the [{}] executor", name);
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    });
    barrier.await();
    blockedExecutors.add(barrier);
    return barrier;
}
项目:googles-monorepo-demo    文件:AbstractScheduledServiceTest.java   
public void testCustomScheduler_deadlock() throws InterruptedException, BrokenBarrierException {
  final CyclicBarrier inGetNextSchedule = new CyclicBarrier(2);
  // This will flakily deadlock, so run it multiple times to increase the flake likelihood
  for (int i = 0; i < 1000; i++) {
    Service service = new AbstractScheduledService() {
      @Override protected void runOneIteration() {}
      @Override protected Scheduler scheduler() {
        return new CustomScheduler() {
          @Override protected Schedule getNextSchedule() throws Exception {
            if (state() != State.STARTING) {
              inGetNextSchedule.await();
              Thread.yield();
              throw new RuntimeException("boom");
            }
            return new Schedule(0, TimeUnit.NANOSECONDS);
          }
        };
      }
    };
    service.startAsync().awaitRunning();
    inGetNextSchedule.await();
    service.stopAsync();
  }
}
项目:monarch    文件:StringMapLoopsJUnitTest.java   
static void test(int i, int nkeys, String[] key, Class mapClass) throws Exception {
  System.out.print("Threads: " + i + "\t:");
  Map map = (Map) mapClass.newInstance();
  // Uncomment to start with a non-empty table
  // for (int j = 0; j < nkeys; j += 4) // start 1/4 occupied
  // map.put(key[j], key[j]);
  LoopHelpers.BarrierTimer timer = new LoopHelpers.BarrierTimer();
  CyclicBarrier barrier = new CyclicBarrier(i + 1, timer);
  for (int t = 0; t < i; ++t)
    pool.execute(new Runner(t, map, key, barrier));
  barrier.await();
  barrier.await();
  long time = timer.getTime();
  long tpo = time / (i * (long) nops);
  System.out.print(LoopHelpers.rightJustify(tpo) + " ns per op");
  double secs = (double) (time) / 1000000000.0;
  System.out.println("\t " + secs + "s run time");
  map.clear();
}
项目:reactive-demo    文件:SomeFeed.java   
private SomeFeed(int threadCount, boolean barriered) {
        this.threadCount = threadCount;
        this.barriered = barriered;
        if (barriered) {
            barrier = new CyclicBarrier(threadCount, System.out::println);
        }
        launchPublishers();
        SomeListener tickOutputter = new SomeListener() {
            @Override
            public void priceTick(PriceTick event) {
                System.out.println(".");
            }

            @Override
            public void error(Throwable throwable) {

            }
        };
//        register(tickOutputter);
    }
项目:EatDubbo    文件:SimpleProcessorBenchmarkClientRunnable.java   
public SimpleProcessorBenchmarkClientRunnable(String targetIP, int targetPort, int clientNums, int rpcTimeout,
                                              CyclicBarrier barrier, CountDownLatch latch, long startTime,
                                              long endTime){

    this.targetIP = targetIP;
    this.targetPort = targetPort;
    this.clientNums = clientNums;
    this.rpcTimeout = rpcTimeout;
    this.barrier = barrier;
    this.latch = latch;
    this.startTime = startTime;
    this.endTime = endTime;
    maxRange = (Integer.parseInt(String.valueOf((endTime - startTime))) / 1000) + 1;
    errorTPS = new long[maxRange];
    errorResponseTimes = new long[maxRange];
    tps = new long[maxRange];
    responseTimes = new long[maxRange];
    // init
    for (int i = 0; i < maxRange; i++) {
        errorTPS[i] = 0;
        errorResponseTimes[i] = 0;
        tps[i] = 0;
        responseTimes[i] = 0;
    }
}
项目:openjdk-jdk10    文件:LongAdderTest.java   
/**
 * adds by multiple threads produce correct sum
 */
public void testAddAndSumMT() throws Throwable {
    final int incs = 1000000;
    final int nthreads = 4;
    final ExecutorService pool = Executors.newCachedThreadPool();
    LongAdder a = new LongAdder();
    CyclicBarrier barrier = new CyclicBarrier(nthreads + 1);
    for (int i = 0; i < nthreads; ++i)
        pool.execute(new AdderTask(a, barrier, incs));
    barrier.await();
    barrier.await();
    long total = (long)nthreads * incs;
    long sum = a.sum();
    assertEquals(sum, total);
    pool.shutdown();
}
项目:incubator-servicecomb-saga    文件:OmegaContextTest.java   
@Test
public void eachThreadGetsDifferentGlobalTxId() throws Exception {
  CyclicBarrier barrier = new CyclicBarrier(2);

  Runnable runnable = exceptionalRunnable(() -> {
    String txId = UUID.randomUUID().toString();
    omegaContext.setGlobalTxId(txId);
    barrier.await();

    assertThat(omegaContext.globalTxId(), is(txId));
  });

  CompletableFuture<Void> future1 = CompletableFuture.runAsync(runnable);
  CompletableFuture<Void> future2 = CompletableFuture.runAsync(runnable);

  CompletableFuture.allOf(future1, future2).join();
}
项目:incubator-servicecomb-saga    文件:TimeAwareInterceptorTest.java   
@Test(timeout = 5000)
public void invokeEitherPostInterceptOrOnTimeoutConcurrently() throws Exception {
  List<Future<?>> futures = new LinkedList<>();

  for (int i = 0; i < runningCounts; i++) {
    TimeAwareInterceptor interceptor = new TimeAwareInterceptor(underlying);
    CyclicBarrier cyclicBarrier = new CyclicBarrier(2);


    futures.add(executorService.submit(() -> {
      waitForSignal(cyclicBarrier);
      interceptor.postIntercept(localTxId, signature);
    }));

    futures.add(executorService.submit(() -> {
      waitForSignal(cyclicBarrier);
      interceptor.onTimeout(localTxId, signature, timeoutException);
    }));
  }

  waitTillAllDone(futures);

  assertThat(postInterceptInvoked.get() + onTimeoutInvoked.get(), is(runningCounts));
}
项目:incubator-servicecomb-saga    文件:TimeAwareInterceptorTest.java   
@Test(timeout = 5000)
public void invokeEitherOnErrorOrOnTimeoutConcurrently() throws Exception {
  RuntimeException oops = new RuntimeException("oops");
  List<Future<?>> futures = new LinkedList<>();

  for (int i = 0; i < runningCounts; i++) {
    TimeAwareInterceptor interceptor = new TimeAwareInterceptor(underlying);
    CyclicBarrier cyclicBarrier = new CyclicBarrier(2);


    futures.add(executorService.submit(() -> {
      waitForSignal(cyclicBarrier);
      interceptor.onError(localTxId, signature, oops);
    }));

    futures.add(executorService.submit(() -> {
      waitForSignal(cyclicBarrier);
      interceptor.onTimeout(localTxId, signature, timeoutException);
    }));
  }

  waitTillAllDone(futures);

  assertThat(onErrorInvoked.get() + onTimeoutInvoked.get(), is(runningCounts));
}
项目:dubbo2    文件:SimpleProcessorBenchmarkClientRunnable.java   
public SimpleProcessorBenchmarkClientRunnable(String targetIP, int targetPort, int clientNums, int rpcTimeout,
                                              CyclicBarrier barrier, CountDownLatch latch, long startTime,
                                              long endTime){

    this.targetIP = targetIP;
    this.targetPort = targetPort;
    this.clientNums = clientNums;
    this.rpcTimeout = rpcTimeout;
    this.barrier = barrier;
    this.latch = latch;
    this.startTime = startTime;
    this.endTime = endTime;
    maxRange = (Integer.parseInt(String.valueOf((endTime - startTime))) / 1000) + 1;
    errorTPS = new long[maxRange];
    errorResponseTimes = new long[maxRange];
    tps = new long[maxRange];
    responseTimes = new long[maxRange];
    // init
    for (int i = 0; i < maxRange; i++) {
        errorTPS[i] = 0;
        errorResponseTimes[i] = 0;
        tps[i] = 0;
        responseTimes[i] = 0;
    }
}
项目:dubbo2    文件:AbstractClientRunnable.java   
public AbstractClientRunnable(String targetIP, int targetPort, int clientNums, int rpcTimeout,
                              CyclicBarrier barrier, CountDownLatch latch, long startTime, long endTime){

    this.barrier = barrier;
    this.latch = latch;
    this.startTime = startTime;
    this.endTime = endTime;
    serviceFactory.setTargetIP(targetIP);
    serviceFactory.setClientNums(clientNums);
    serviceFactory.setTargetPort(targetPort);
    serviceFactory.setConnectTimeout(rpcTimeout);
    maxRange = (Integer.parseInt(String.valueOf((endTime - startTime))) / 1000000) + 1;
    errorTPS = new long[maxRange];
    errorResponseTimes = new long[maxRange];
    tps = new long[maxRange];
    responseTimes = new long[maxRange];
    // init
    for (int i = 0; i < maxRange; i++) {
        errorTPS[i] = 0;
        errorResponseTimes[i] = 0;
        tps[i] = 0;
        responseTimes[i] = 0;
    }
}
项目:dubbo2    文件:BidClientRunnable.java   
public BidClientRunnable(String protocol, String serialization, String targetIP, int targetPort, int clientNums, int rpcTimeout,
                          CyclicBarrier barrier, CountDownLatch latch, long startTime,
                          long endTime){
    super(protocol, serialization, targetIP, targetPort, clientNums, rpcTimeout, barrier, latch, startTime, endTime);
    Impression imp = new Impression();
    imp.setBidFloor(1.1);
    imp.setId("abc");
    List<Impression> imps = new ArrayList<Impression>(1);
    imps.add(imp);
    request.setImpressions(imps);

    Geo geo = new Geo();
    geo.setCity("beijing");
    geo.setCountry("china");
    geo.setLat(100.1f);
    geo.setLon(100.1f);

    Device device = new Device();
    device.setMake("apple");
    device.setOs("ios");
    device.setVersion("7.0");
    device.setLang("zh_CN");
    device.setModel("iphone");
    device.setGeo(geo);
    request.setDevice(device);
}
项目:dubbox-hystrix    文件:AbstractClientRunnable.java   
public AbstractClientRunnable(String protocol, String serialization, String targetIP, int targetPort, int clientNums, int rpcTimeout,
                              CyclicBarrier barrier, CountDownLatch latch, long startTime, long endTime){

    this.barrier = barrier;
    this.latch = latch;
    this.startTime = startTime;
    this.endTime = endTime;
    serviceFactory.setProtocol(protocol);
    serviceFactory.setTargetIP(targetIP);
    serviceFactory.setClientNums(clientNums);
    serviceFactory.setTargetPort(targetPort);
    serviceFactory.setConnectTimeout(rpcTimeout);
    serviceFactory.setSerialization(serialization);
    maxRange = (Integer.parseInt(String.valueOf((endTime - startTime))) / 1000000) + 1;
    errorTPS = new long[maxRange];
    errorResponseTimes = new long[maxRange];
    tps = new long[maxRange];
    responseTimes = new long[maxRange];
    // init
    for (int i = 0; i < maxRange; i++) {
        errorTPS[i] = 0;
        errorResponseTimes[i] = 0;
        tps[i] = 0;
        responseTimes[i] = 0;
    }
}
项目:cyberduck    文件:BackgroundActionPauser.java   
public void await() {
    if(0 == delay) {
        log.info("No pause between retry");
        return;
    }
    final Timer wakeup = new Timer();
    final CyclicBarrier wait = new CyclicBarrier(2);
    // Schedule for immediate execution with an interval of 1s
    wakeup.scheduleAtFixedRate(new PauserTimerTask(wait), 0, 1000);
    try {
        // Wait for notify from wakeup timer
        wait.await();
    }
    catch(InterruptedException | BrokenBarrierException e) {
        log.error(e.getMessage(), e);
    }
}
项目:jaer    文件:SyncPlayer.java   
synchronized void makeBarrier() {
        if (numPlayers < 1) {
            log.warning("cannot make barrier for " + numPlayers + " viewers - something is wrong");
            log.warning("disabling sychronized playback because probably multiple viewers are active but we are not playing set of sychronized files");
            outer.getToggleSyncEnabledAction().actionPerformed(null);
            // toggle all the viewers syncenabled menu item
//               JOptionPane.showMessageDialog(null,"Disabled sychronized playback because files are not part of sychronized set");
            return;
        }
        log.info("making barrier for " + this);
        barrier = new CyclicBarrier(numPlayers, new Runnable() {

            public void run() {
                // this is run after await synchronization; it updates the time to read events from each AEInputStream
//                        log.info(Thread.currentThread()+" resetting barrier");
                barrier.reset();
                setTime(getTime() + getTimesliceUs());
            }
        });
    }
项目:dubbox-hystrix    文件:SimpleProcessorBenchmarkClientRunnable.java   
public SimpleProcessorBenchmarkClientRunnable(String targetIP, int targetPort, int clientNums, int rpcTimeout,
                                              CyclicBarrier barrier, CountDownLatch latch, long startTime,
                                              long endTime){

    this.targetIP = targetIP;
    this.targetPort = targetPort;
    this.clientNums = clientNums;
    this.rpcTimeout = rpcTimeout;
    this.barrier = barrier;
    this.latch = latch;
    this.startTime = startTime;
    this.endTime = endTime;
    maxRange = (Integer.parseInt(String.valueOf((endTime - startTime))) / 1000) + 1;
    errorTPS = new long[maxRange];
    errorResponseTimes = new long[maxRange];
    tps = new long[maxRange];
    responseTimes = new long[maxRange];
    // init
    for (int i = 0; i < maxRange; i++) {
        errorTPS[i] = 0;
        errorResponseTimes[i] = 0;
        tps[i] = 0;
        responseTimes[i] = 0;
    }
}
项目:openjdk-jdk10    文件:ExchangeLoops.java   
static void oneRun(int nthreads, int iters) throws Exception {
    LoopHelpers.BarrierTimer timer = new LoopHelpers.BarrierTimer();
    CyclicBarrier barrier = new CyclicBarrier(nthreads + 1, timer);
    Exchanger<Int> l = null;
    Exchanger<Int> r = new Exchanger<>();
    for (int i = 0; i < nthreads; ++i) {
        pool.execute(new Stage(l, r, barrier, iters));
        l = r;
        r = (i+2 < nthreads) ? new Exchanger<Int>() : null;
    }
    barrier.await();
    barrier.await();
    long time = timer.getTime();
    if (print)
        System.out.println(LoopHelpers.rightJustify(time / (iters * nthreads + iters * (nthreads-2))) + " ns per transfer");
}
项目:incubator-servicecomb-java-chassis    文件:ZipkinTracingAdviserTest.java   
@Test
public void startsNewChildSpan() throws Exception {
  CyclicBarrier cyclicBarrier = new CyclicBarrier(nThreads);

  CompletableFuture<?>[] futures = new CompletableFuture[nThreads];
  for (int i = 0; i < nThreads; i++) {
    futures[i] = CompletableFuture.runAsync(() -> {
      Span currentSpan = tracing.tracer().newTrace().start();

      waitTillAllAreReady(cyclicBarrier);

      try (SpanInScope spanInScope = tracing.tracer().withSpanInScope(currentSpan)) {
        assertThat(tracingAdviser.invoke(spanName, path, supplier), is(expected));
      } catch (Throwable throwable) {
        fail(throwable.getMessage());
      } finally {
        currentSpan.finish();
      }
    }, Executors.newFixedThreadPool(nThreads));
  }

  CompletableFuture.allOf(futures).join();

  assertThat(traces.size(), is(nThreads));

  for (Queue<zipkin2.Span> queue : traces.values()) {
    zipkin2.Span child = queue.poll();
    assertThat(child.name(), is(spanName));

    zipkin2.Span parent = queue.poll();
    assertThat(child.parentId(), is(parent.id()));
    assertThat(child.traceId(), is(parent.traceId()));
    assertThat(tracedValues(child), contains(this.getClass().getCanonicalName()));
  }
}
项目:incubator-netbeans    文件:MimePathLookupTest.java   
public void testRebuildNoDeadlock() throws Exception {
    CyclicBarrier barrier= new CyclicBarrier(2);

    final Task1 task1 = new Task1();
    Thread t1 = new Thread(task1, "Thread 1");
    final Task2 task2 = new Task2(barrier);
    Thread t2 = new Thread(task2, "Thread 2");
    handler.setBarrier(barrier);
    t1.start();
    t2.start();
    t1.join(60000);
    t2.join(60000); // wait max 1 min for the test to finish
    assertTrue(task1.done);
    assertTrue(task2.done);
}
项目:openjdk-jdk10    文件:Basic.java   
private static Awaiter awaiter(final CyclicBarrier barrier,
                               final long millis) {
    return new Awaiter() { public void run() {
        toTheStartingGate();

        try { barrier.await(millis, MILLISECONDS); }
        catch (Throwable result) { result(result); }}};
}
项目:JavaCommon    文件:CyclicBarrierDemo.java   
public static void main(String[] args) {
    int num = 10;
    CyclicBarrier barrier = new CyclicBarrier(num, new Runnable() {
        @Override
        public void run() {
            // TODO Auto-generated method stub
            System.out.println("go on together!");
        }
    });
    for (int i = 1; i <= num; i++) {
        new Thread(new CyclicBarrierWorker(i, barrier)).start();
    }
}
项目:snowflake    文件:SnowflakeControllerTest.java   
@Test
public void getId32() throws Exception {

    int nThreads = 1000;
    int size = 1000;
    CyclicBarrier cyclicBarrier = new CyclicBarrier(nThreads + 1);
    StopWatch stopWatch = new StopWatch();
    ExecutorService executorService = Executors.newFixedThreadPool(nThreads);
    stopWatch.start();
    for (int i = 0; i < nThreads; i++) {
        int port = (8800 + (i % 10));
        executorService.execute(new Runnable() {
            @Override
            public void run() {
                try {
                    cyclicBarrier.await();
                    for (int j = 0; j < size; j++) {
                        mockMvc.perform(
                                get("/api/snowflake/get-id32?partnerKey=A" + port)
                                        .header("Content-Type", "application/json;charset=UTF-8"))
                               .andExpect(status().isOk())
                               .andExpect(jsonPath("$.code").value(0))
                               .andExpect(jsonPath("$.data.id").isNumber());
                    }
                    cyclicBarrier.await();
                } catch (Exception e) {
                    e.printStackTrace();
                }

            }
        });
    }
    cyclicBarrier.await();
    cyclicBarrier.await();
    stopWatch.stop();
    System.out.println(stopWatch.prettyPrint());
    executorService.shutdown();
}
项目:googles-monorepo-demo    文件:SerializingExecutorTest.java   
public void testTaskThrowsError() throws Exception {
  class MyError extends Error {}
  final CyclicBarrier barrier = new CyclicBarrier(2);
  // we need to make sure the error gets thrown on a different thread.
  ExecutorService service = Executors.newSingleThreadExecutor();
  try {
    final SerializingExecutor executor = new SerializingExecutor(service);
    Runnable errorTask = new Runnable() {
      @Override
      public void run() {
        throw new MyError();
      }
    };
    Runnable barrierTask = new Runnable() {
      @Override
      public void run() {
        try {
          barrier.await();
        } catch (Exception e) {
          throw new RuntimeException(e);
        }
      }
    };
    executor.execute(errorTask);
    service.execute(barrierTask);  // submit directly to the service
    // the barrier task runs after the error task so we know that the error has been observed by
    // SerializingExecutor by the time the barrier is satified
    barrier.await(10, TimeUnit.SECONDS);
    executor.execute(barrierTask);
    // timeout means the second task wasn't even tried
    barrier.await(10, TimeUnit.SECONDS);
  } finally {
    service.shutdown();
  }
}
项目:openjdk-jdk10    文件:PrintTest.java   
private void waitForBarrier(CyclicBarrier b) {
    try {
        b.await();
    } catch (InterruptedException | BrokenBarrierException e) {
        Assert.fail("Test error: Caught unexpected exception:", e);
    }
}
项目:elasticsearch_my    文件:LocalCheckpointTrackerTests.java   
public void testConcurrentPrimary() throws InterruptedException {
    Thread[] threads = new Thread[randomIntBetween(2, 5)];
    final int opsPerThread = randomIntBetween(10, 20);
    final int maxOps = opsPerThread * threads.length;
    final long unFinishedSeq = randomIntBetween(0, maxOps - 2); // make sure we always index the last seqNo to simplify maxSeq checks
    logger.info("--> will run [{}] threads, maxOps [{}], unfinished seq no [{}]", threads.length, maxOps, unFinishedSeq);
    final CyclicBarrier barrier = new CyclicBarrier(threads.length);
    for (int t = 0; t < threads.length; t++) {
        final int threadId = t;
        threads[t] = new Thread(new AbstractRunnable() {
            @Override
            public void onFailure(Exception e) {
                throw new ElasticsearchException("failure in background thread", e);
            }

            @Override
            protected void doRun() throws Exception {
                barrier.await();
                for (int i = 0; i < opsPerThread; i++) {
                    long seqNo = tracker.generateSeqNo();
                    logger.info("[t{}] started   [{}]", threadId, seqNo);
                    if (seqNo != unFinishedSeq) {
                        tracker.markSeqNoAsCompleted(seqNo);
                        logger.info("[t{}] completed [{}]", threadId, seqNo);
                    }
                }
            }
        }, "testConcurrentPrimary_" + threadId);
        threads[t].start();
    }
    for (Thread thread : threads) {
        thread.join();
    }
    assertThat(tracker.getMaxSeqNo(), equalTo(maxOps - 1L));
    assertThat(tracker.getCheckpoint(), equalTo(unFinishedSeq - 1L));
    tracker.markSeqNoAsCompleted(unFinishedSeq);
    assertThat(tracker.getCheckpoint(), equalTo(maxOps - 1L));
    assertThat(tracker.processedSeqNo.size(), isOneOf(0, 1));
    assertThat(tracker.firstProcessedSeqNo, equalTo(((long) maxOps / SMALL_CHUNK_SIZE) * SMALL_CHUNK_SIZE));
}
项目:elasticsearch_my    文件:InternalEngineTests.java   
public void testConcurrentGetAndFlush() throws Exception {
    ParsedDocument doc = testParsedDocument("1", "test", null, testDocumentWithTextField(), B_1, null);
    engine.index(indexForDoc(doc));

    final AtomicReference<Engine.GetResult> latestGetResult = new AtomicReference<>();
    latestGetResult.set(engine.get(new Engine.Get(true, newUid(doc))));
    final AtomicBoolean flushFinished = new AtomicBoolean(false);
    final CyclicBarrier barrier = new CyclicBarrier(2);
    Thread getThread = new Thread(() -> {
        try {
            barrier.await();
        } catch (InterruptedException | BrokenBarrierException e) {
            throw new RuntimeException(e);
        }
        while (flushFinished.get() == false) {
            Engine.GetResult previousGetResult = latestGetResult.get();
            if (previousGetResult != null) {
                previousGetResult.release();
            }
            latestGetResult.set(engine.get(new Engine.Get(true, newUid(doc))));
            if (latestGetResult.get().exists() == false) {
                break;
            }
        }
    });
    getThread.start();
    barrier.await();
    engine.flush();
    flushFinished.set(true);
    getThread.join();
    assertTrue(latestGetResult.get().exists());
    latestGetResult.get().release();
}
项目:dubbox-hystrix    文件:BenchmarkClient.java   
@Override
public ClientRunnable getClientRunnable(String targetIP, int targetPort, int clientNums, int rpcTimeout,
                                        CyclicBarrier barrier,
                                        CountDownLatch latch, long endTime, long startTime) {
    return new SimpleProcessorBenchmarkClientRunnable(targetIP, targetPort, clientNums, rpcTimeout,
                                                     barrier, latch, startTime, endTime);
}
项目:EatDubbo    文件:RpcBenchmarkClient.java   
@SuppressWarnings("rawtypes")
@Override
public ClientRunnable getClientRunnable(String targetIP, int targetPort, int clientNums, int rpcTimeout,
                                        CyclicBarrier barrier, CountDownLatch latch, long startTime, long endTime) throws IllegalArgumentException, SecurityException, InstantiationException, IllegalAccessException, InvocationTargetException, NoSuchMethodException, ClassNotFoundException {
    String runnable = properties.getProperty("classname");
    Class[] parameterTypes = new Class[] { String.class, int.class, int.class, int.class, CyclicBarrier.class,
            CountDownLatch.class, long.class, long.class };
    Object[] parameters = new Object[] { targetIP, targetPort, clientNums, rpcTimeout, barrier, latch, startTime,
            endTime };
       return (ClientRunnable) Class.forName(runnable).getConstructor(parameterTypes).newInstance(parameters);
}
项目:mumu-benchmark    文件:AbstractBenchmarkClientRunnable.java   
public AbstractBenchmarkClientRunnable(BenchmarkService benchmarkService, CyclicBarrier barrier, CountDownLatch latch, long startTime, long endTime) {
    this.cyclicBarrier = barrier;
    this.countDownLatch = latch;
    this.startTime = startTime;
    this.endTime = endTime;
    this.benchmarkService = benchmarkService;

    statisticTime = (int) ((endTime - startTime) / 1000000);
    statistics = new RunnableStatistics(statisticTime);
}
项目:openjdk-jdk10    文件:CyclicBarrierTest.java   
/**
 * A 1-party barrier triggers after single await
 */
public void testSingleParty() throws Exception {
    CyclicBarrier b = new CyclicBarrier(1);
    assertEquals(1, b.getParties());
    assertEquals(0, b.getNumberWaiting());
    b.await();
    b.await();
    assertEquals(0, b.getNumberWaiting());
}
项目:incubator-servicecomb-saga    文件:TimeAwareInterceptorTest.java   
private void waitForSignal(CyclicBarrier cyclicBarrier) {
  try {
    cyclicBarrier.await();
  } catch (InterruptedException | BrokenBarrierException e) {
    fail(e.getMessage());
  }
}
项目:dubbo2    文件:RpcBenchmarkClient.java   
@SuppressWarnings("rawtypes")
@Override
public ClientRunnable getClientRunnable(String targetIP, int targetPort, int clientNums, int rpcTimeout,
                                        CyclicBarrier barrier, CountDownLatch latch, long startTime, long endTime) throws IllegalArgumentException, SecurityException, InstantiationException, IllegalAccessException, InvocationTargetException, NoSuchMethodException, ClassNotFoundException {
    String runnable = properties.getProperty("classname");
    Class[] parameterTypes = new Class[] { String.class, int.class, int.class, int.class, CyclicBarrier.class,
            CountDownLatch.class, long.class, long.class };
    Object[] parameters = new Object[] { targetIP, targetPort, clientNums, rpcTimeout, barrier, latch, startTime,
            endTime };
       return (ClientRunnable) Class.forName(runnable).getConstructor(parameterTypes).newInstance(parameters);
}
项目:Java-9-Concurrency-Cookbook-Second-Edition    文件:Main.java   
/**
 * Main method of the example
 * @param args
 */
public static void main(String[] args) {

    /*
     * Initializes the bi-dimensional array of data
     *      10000 rows
     *      1000 numbers in each row
     *      Looking for number 5
     */
    final int ROWS=10000;
    final int NUMBERS=1000;
    final int SEARCH=5; 
    final int PARTICIPANTS=5;
    final int LINES_PARTICIPANT=2000;
    MatrixMock mock=new MatrixMock(ROWS, NUMBERS,SEARCH);

    // Initializes the object for the results
    Results results=new Results(ROWS);

    // Creates an Grouper object
    Grouper grouper=new Grouper(results);

    // Creates the CyclicBarrier object. It has 5 participants and, when
    // they finish, the CyclicBarrier will execute the grouper object
    CyclicBarrier barrier=new CyclicBarrier(PARTICIPANTS,grouper);

    // Creates, initializes and starts 5 Searcher objects
    Searcher searchers[]=new Searcher[PARTICIPANTS];
    for (int i=0; i<PARTICIPANTS; i++){
        searchers[i]=new Searcher(i*LINES_PARTICIPANT, (i*LINES_PARTICIPANT)+LINES_PARTICIPANT, mock, results, 5,barrier);
        Thread thread=new Thread(searchers[i]);
        thread.start();
    }
    System.out.printf("Main: The main thread has finished.\n");
}
项目:dubbo2    文件:BenchmarkClient.java   
@Override
public ClientRunnable getClientRunnable(String targetIP, int targetPort, int clientNums, int rpcTimeout,
                                        CyclicBarrier barrier,
                                        CountDownLatch latch, long endTime, long startTime) {
    return new SimpleProcessorBenchmarkClientRunnable(targetIP, targetPort, clientNums, rpcTimeout,
                                                     barrier, latch, startTime, endTime);
}
项目:openjdk-jdk10    文件:CyclicBarrierTest.java   
/**
 * A timeout in timed await throws TimeoutException
 */
public void testAwait3_TimeoutException() throws InterruptedException {
    final CyclicBarrier c = new CyclicBarrier(2);
    Thread t = newStartedThread(new CheckedRunnable() {
        public void realRun() throws Exception {
            long startTime = System.nanoTime();
            try {
                c.await(timeoutMillis(), MILLISECONDS);
                shouldThrow();
            } catch (TimeoutException success) {}
            assertTrue(millisElapsedSince(startTime) >= timeoutMillis());
        }});

    awaitTermination(t);
}