java 最难的一道面试题

176 阅读1分钟

public class TestSync2 implements Runnable {

	int b=100;

	@Override

	public void run() {

		try {

			m1();

		} catch (InterruptedException e) {

			// TODO Auto-generated catch block

			e.printStackTrace();

		}

	}

	synchronized void m1() throws InterruptedException {

		b=1000;

		Thread.sleep(500);

		System.out.println("b="+b);

	}

	synchronized void m2() throws InterruptedException {

		

		Thread.sleep(250);

		b=2000;

	}

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

		TestSync2 tt=new TestSync2();

		Thread t = new Thread(tt);

		t.start();

		tt.m2();

		System.out.println("main thread b="+tt.b);

	}

}


输入结果是?

这个真的是考验多线程的理解!