public class Quest implements Runnable { int b = 100; public synchronized void m1() throws Exception { System.out.println("enter m1"); b = 1000; Thread.sleep(3000); System.out.println("b="+b); } public void m2() throws Exception { System.out.println("enter m2"); Thread.sleep(3000); b = 2000; } @Override public void run() { try { m1(); } catch (Exception e) { e.printStackTrace(); } } public static void main(String[] args) { try { Quest quest = new Quest(); // 线程从调用start()到run()执行需要一定的时间 new Thread(quest).start(); // 所以此处会先执行m2() quest.m2(); System.out.println(quest.b); } catch (Exception e) { e.printStackTrace(); } } }
结果:
每次先打印 m2
原文:https://www.cnblogs.com/virgosnail/p/10171352.html