Java 9(JEP 143)中针对竞争锁的优化

在JEP 143(http://openjdk.java.net/jeps/143 在Java 9发布)中对竞争锁做了优化,简要内容如下:
JEP 143: Improve Contended Locking
Summary: Improve the performance of contended Java object monitors.

做一个简单的对比测试,代码如下,分别基于Java 8.0_152和Java 9.0.4

按照官方说明,关闭偏向锁和轻量锁 -XX:-UseBiasedLocking -XX:+UseHeavyMonitors

public class SyncTest implements Runnable {

public static void main(String[] args) throws InterruptedException {

    int threadNum = 4;

    SyncTest syncTest = new SyncTest();

    Thread[] threadGroup = new Thread[threadNum];

    for (int i = 0; i < threadNum; i++) {
        threadGroup[i] = new Thread(syncTest);
    }

    long begin = System.currentTimeMillis();

    for (int i = 0; i < threadNum; i++) {
        threadGroup[i].start();
    }

    for (int i = 0; i < threadNum; i++) {
        threadGroup[i].join();
    }

    long end = System.currentTimeMillis();

    System.out.println(end - begin);
}

public void run() {
    for (int i = 0; i < 100000000; i++) {
        synchronized (this) {

        }
    }
}

}

最终经过多次对比:
在Java8下,平均执行时间大约为5.8s
在Java9下,平均执行时间大约为4.4s

你可能感兴趣的:(Java 9(JEP 143)中针对竞争锁的优化)