同步锁效率低的例子

xiaoxiao2021-02-28  88

public class TestSync3 implements Runnable { private int b = 100;

private synchronized void m1() throws InterruptedException { b = 2000;

// Thread.sleep(500); System.out.println(“m1:” + b); }

private void m2() { System.out.println("m2:" + b); } public static void main(String[] args) throws InterruptedException { TestSync3 tt = new TestSync3(); Thread t = new Thread(tt); t.start();

// Thread.sleep(100); tt.m2(); }

@Override public void run() { try { m1(); } catch (InterruptedException e) { e.printStackTrace(); } }

}

结果是: m2:100 m1:2000 解析: 在两个线程都不“睡眠”(不加sleep)时,加了同步锁(synchronized )的m1方法总是比m2慢,所以m2先于m1得出结果。 因为m1方法加了同步锁,会导致效率低,所以运行起来m1一定在m2后面执行。

转载请注明原文地址: https://www.6miu.com/read-85312.html

最新回复(0)