test/java/util/concurrent/BlockingQueue/MultipleProducersSingleConsumerLoops.java

Print this page

        

*** 32,42 **** */ /* * @test * @bug 4486658 ! * @compile MultipleProducersSingleConsumerLoops.java * @run main/timeout=3600 MultipleProducersSingleConsumerLoops * @summary multiple producers and single consumer using blocking queues */ import java.util.concurrent.*; --- 32,42 ---- */ /* * @test * @bug 4486658 ! * @compile -source 1.5 MultipleProducersSingleConsumerLoops.java * @run main/timeout=3600 MultipleProducersSingleConsumerLoops * @summary multiple producers and single consumer using blocking queues */ import java.util.concurrent.*;
*** 85,123 **** pool.shutdown(); if (! pool.awaitTermination(Long.MAX_VALUE, TimeUnit.NANOSECONDS)) throw new Error(); } - static final class LTQasSQ<T> extends LinkedTransferQueue<T> { - LTQasSQ() { super(); } - public void put(T x) { - try { super.transfer(x); } - catch (InterruptedException ex) { throw new Error(); } - } - private final static long serialVersionUID = 42; - } - - static final class HalfSyncLTQ<T> extends LinkedTransferQueue<T> { - HalfSyncLTQ() { super(); } - public void put(T x) { - if (ThreadLocalRandom.current().nextBoolean()) - super.put(x); - else { - try { super.transfer(x); } - catch (InterruptedException ex) { throw new Error(); } - } - } - private final static long serialVersionUID = 42; - } - static void oneTest(int producers, int iters) throws Exception { oneRun(new ArrayBlockingQueue<Integer>(CAPACITY), producers, iters); oneRun(new LinkedBlockingQueue<Integer>(CAPACITY), producers, iters); oneRun(new LinkedBlockingDeque<Integer>(CAPACITY), producers, iters); oneRun(new LinkedTransferQueue<Integer>(), producers, iters); - oneRun(new LTQasSQ<Integer>(), producers, iters); - oneRun(new HalfSyncLTQ<Integer>(), producers, iters); // Don't run PBQ since can legitimately run out of memory // if (print) // System.out.print("PriorityBlockingQueue "); // oneRun(new PriorityBlockingQueue<Integer>(), producers, iters); --- 85,99 ----
*** 127,141 **** System.out.println("fair implementations:"); oneRun(new SynchronousQueue<Integer>(true), producers, iters); oneRun(new ArrayBlockingQueue<Integer>(CAPACITY, true), producers, iters); } ! static abstract class Stage implements Runnable { final int iters; final BlockingQueue<Integer> queue; final CyclicBarrier barrier; ! Stage (BlockingQueue<Integer> q, CyclicBarrier b, int iters) { queue = q; barrier = b; this.iters = iters; } } --- 103,117 ---- System.out.println("fair implementations:"); oneRun(new SynchronousQueue<Integer>(true), producers, iters); oneRun(new ArrayBlockingQueue<Integer>(CAPACITY, true), producers, iters); } ! abstract static class Stage implements Runnable { final int iters; final BlockingQueue<Integer> queue; final CyclicBarrier barrier; ! Stage(BlockingQueue<Integer> q, CyclicBarrier b, int iters) { queue = q; barrier = b; this.iters = iters; } }