验证:线程启动的时间开销大于方法调用的时间开销
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
如果文章对您有所帮助,可以点一下推荐