diff --git a/multithreading1/src/main/java/cn/bunny/JMHExample05.java b/multithreading1/src/main/java/cn/bunny/JMHExample05.java new file mode 100644 index 0000000..18d9ad2 --- /dev/null +++ b/multithreading1/src/main/java/cn/bunny/JMHExample05.java @@ -0,0 +1,56 @@ +package cn.bunny; + +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.TimeUnit; + +@BenchmarkMode(Mode.AverageTime) +@Fork(1) +@Warmup(iterations = 5) +@Measurement(iterations = 10) +@OutputTimeUnit(TimeUnit.MICROSECONDS) +public class JMHExample05 { + + public static void main(String[] args) throws RunnerException { + Options options = new OptionsBuilder() + .include(JMHExample05.class.getSimpleName()) + .build(); + + new Runner(options).run(); + } + + // 在线程组test,在线称中有三个线程不断对Test实例write方法进行调用 + @GroupThreads(3) + @Group("test") + @Benchmark + public void testWrite(MyState state) { + state.write(); + } + + // 在线程组test,在线程中有三个线程对testRead方法进行调用 + @GroupThreads(3) + @Group("test") + @Benchmark + public void testRead(MyState state) { + state.read(); + } + + @State(Scope.Benchmark) + public static class MyState { + public MyState() { + System.out.println("create instance"); + } + + public void write() { + System.out.println("write"); + } + + public void read() { + System.out.println("read"); + } + } +}