44 |
|
import java.util.Spliterator; |
45 |
|
import java.util.Vector; |
46 |
|
import java.util.concurrent.ArrayBlockingQueue; |
47 |
+ |
import java.util.concurrent.BlockingDeque; |
48 |
|
import java.util.concurrent.BlockingQueue; |
49 |
|
import java.util.concurrent.ConcurrentLinkedDeque; |
50 |
|
import java.util.concurrent.ConcurrentLinkedQueue; |
287 |
|
BlockingQueue<Integer> q = (BlockingQueue<Integer>) x; |
288 |
|
jobs.addAll(blockingQueueJobs(klazz, () -> q, al)); |
289 |
|
} |
290 |
+ |
if (x instanceof BlockingDeque) { |
291 |
+ |
BlockingDeque<Integer> q = (BlockingDeque<Integer>) x; |
292 |
+ |
jobs.addAll(blockingDequeJobs(klazz, () -> q, al)); |
293 |
+ |
} |
294 |
|
if (x instanceof List) { |
295 |
|
List<Integer> list = (List<Integer>) x; |
296 |
|
jobs.addAll( |
452 |
|
sink.forEach(e -> sum[0] += e); |
453 |
|
check.sum(sum[0]);}}}); |
454 |
|
} |
455 |
+ |
|
456 |
+ |
List<Job> blockingDequeJobs( |
457 |
+ |
String description, |
458 |
+ |
Supplier<BlockingDeque<Integer>> supplier, |
459 |
+ |
ArrayList<Integer> al) { |
460 |
+ |
return List.of( |
461 |
+ |
new Job(description + " timed pollFirst()") { |
462 |
+ |
public void work() throws Throwable { |
463 |
+ |
BlockingDeque<Integer> x = supplier.get(); |
464 |
+ |
int[] sum = new int[1]; |
465 |
+ |
for (int i = 0; i < iterations; i++) { |
466 |
+ |
sum[0] = 0; |
467 |
+ |
x.addAll(al); |
468 |
+ |
for (Integer e; (e = x.pollFirst(0L, TimeUnit.DAYS)) != null; ) |
469 |
+ |
sum[0] += e; |
470 |
+ |
check.sum(sum[0]);}}}, |
471 |
+ |
new Job(description + " timed pollLast()") { |
472 |
+ |
public void work() throws Throwable { |
473 |
+ |
BlockingDeque<Integer> x = supplier.get(); |
474 |
+ |
int[] sum = new int[1]; |
475 |
+ |
for (int i = 0; i < iterations; i++) { |
476 |
+ |
sum[0] = 0; |
477 |
+ |
x.addAll(al); |
478 |
+ |
for (Integer e; (e = x.pollLast(0L, TimeUnit.DAYS)) != null; ) |
479 |
+ |
sum[0] += e; |
480 |
+ |
check.sum(sum[0]);}}}); |
481 |
+ |
} |
482 |
|
} |