MultiThread/multithreading_init/src/main/java/jmh/JMHExample14.java

50 lines
1.4 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package jmh;
import org.openjdk.jmh.annotations.*;
import org.openjdk.jmh.runner.Runner;
import org.openjdk.jmh.runner.RunnerException;
import org.openjdk.jmh.runner.options.Options;
import org.openjdk.jmh.runner.options.OptionsBuilder;
import java.util.concurrent.BlockingDeque;
import java.util.concurrent.LinkedBlockingDeque;
import java.util.concurrent.TimeUnit;
@BenchmarkMode(Mode.AverageTime)
@Fork(1)
@Warmup(iterations = 5)
@Measurement(iterations = 5)
@OutputTimeUnit(TimeUnit.MICROSECONDS)
@State(Scope.Group)
public class JMHExample14 {
private final static int VALUE = Integer.MAX_VALUE;
private BlockingDeque<Integer> queue;
public static void main(String[] args) throws RunnerException {
final Options options = new OptionsBuilder()
.include(JMHExample14.class.getSimpleName())
.build();
new Runner(options).run();
}
@Setup
public void init() {
this.queue = new LinkedBlockingDeque<>(10);
}
// 会出现长时间的阻塞最长时间正常是10分钟在下一章节会对这个进行优化
@GroupThreads(5)
@Group("blockingQueue")
@Benchmark
public void put() throws InterruptedException {
this.queue.put(VALUE);
}
@GroupThreads(5)
@Group("blockingQueue")
@Benchmark
public int take() throws InterruptedException {
return this.queue.take();
}
}