Added a test class which shows the PriorityBlockingQueue being used

This commit is contained in:
Andrew Morgan 2017-02-02 23:15:23 +01:00
parent a1312e9ce0
commit 75860a063e
1 changed files with 57 additions and 0 deletions

View File

@ -0,0 +1,57 @@
package com.baeldung.concurrent.priorityblockingqueue;
import org.assertj.core.api.Assertions;
import org.junit.Test;
import java.util.ArrayList;
import java.util.concurrent.PriorityBlockingQueue;
import java.util.concurrent.TimeUnit;
import java.util.stream.IntStream;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.util.Lists.newArrayList;
public class PriorityBlockingQueueUnitTest {
@Test
public void shouldOrderQueue_whenPolling() throws InterruptedException {
PriorityBlockingQueue<Integer> queue = new PriorityBlockingQueue<>();
ArrayList<Integer> polledElements = new ArrayList<>();
queue.add(1);
queue.add(5);
queue.add(2);
queue.add(3);
queue.add(4);
polledElements.add(queue.poll());
polledElements.add(queue.poll());
polledElements.add(queue.poll());
polledElements.add(queue.poll());
polledElements.add(queue.poll());
assertThat(polledElements).containsExactly(1, 2, 3, 4, 5);
}
@Test
public void shouldBlockThread_WhenPollingEmptyQueue() throws InterruptedException {
PriorityBlockingQueue<Integer> queue = new PriorityBlockingQueue<>();
final Thread thread = new Thread(() -> {
System.out.println("Polling...");
while (true) {
try {
Integer poll = queue.take();
System.out.println("Polled: " + poll);
} catch (InterruptedException e) {}
}
});
thread.start();
Thread.sleep(TimeUnit.SECONDS.toMillis(5));
System.out.println("Adding to queue");
queue.addAll(newArrayList(1, 5, 6, 1, 2, 6, 7));
Thread.sleep(TimeUnit.SECONDS.toMillis(1));
}
}