Java Reference
In-Depth Information
Listing 12-28 contains the code to test a TransferQueue . You may get a different output when you
run the program.
Listing 12-28. A Class to Test a TransferQueue
// TQProducerConsumerTest.java
package com.jdojo.collections;
import java.util.concurrent.LinkedTransferQueue;
import java.util.concurrent.TransferQueue;
import java.util.concurrent.atomic.AtomicInteger;
public class TQProducerConsumerTest {
public static void main(String[] args) {
final TransferQueue<Integer> tQueue = new LinkedTransferQueue<>();
final AtomicInteger sequence = new AtomicInteger();
// Initialize transfer queue with five items
for(int i = 0; i < 5; i++) {
try {
tQueue.put(sequence.incrementAndGet());
}
catch (InterruptedException e) {
e.printStackTrace();
}
}
System.out.println("Initial queue: " + tQueue);
// Create and start a producer and a consumer
new TQProducer("Producer-1", tQueue, sequence).start();
new TQConsumer("Consumer-1", tQueue).start();
}
}
Initial queue: [1, 2, 3, 4, 5]
Producer-1: Enqueuing: 6
Consumer-1 removed: 1
Consumer-1 removed: 2
Producer-1: Handing off: 7
Producer-1: has a waiting consumer: false
Consumer-1 removed: 3
Consumer-1 removed: 4
Consumer-1 removed: 5
Consumer-1 removed: 6
Consumer-1 removed: 7
Producer-1: Enqueuing: 8
Consumer-1 removed: 8
...
Search WWH ::




Custom Search