简介 同步方法只能保证当前方法的原子性,不能保证多个业务方法之间互相访问的原子性.注意在商业开发中,多方法调用要求结果访问原子性,需要多个方法都加锁,锁定同一资源.一般来说,商业项目不考虑业务逻辑的脏读问题.只准求数据的原子性. 测试代码 public class Test03 { private double b = 0.0D; public synchronized void m1(double b) { try { //相当于复杂的业务代码,使用休眠替代. TimeUnit.SECONDS.sleep(2); } catch (InterruptedException e) { e.printStackTrace(); } this.b = b; } public double m2() { return this.b; } public static void main(String[] args) { Test03 t = new Test03(); new Thread(new Runnable() { @Override public void run() { t.m1(100); } }).start(); System.out.println(t.m2()); try { TimeUnit.SECONDS.sleep(3); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println(t.m2()); } } 运行结果 0.0 100.0 QA 使用 Thread.sleep()取代复杂的业务逻辑.