想请问一下这串代码是怎么运行的为什么结果是hello,为什么不是在s=“java”那里就赋值输出了呀?
你所有的线程执行run()方法到f()里面,在打印之前进入的wait()方法所有的线程都进入到等待状态,虽然你条件是满足了,但是是在s="hello"后调用notify()方法唤醒线程,此时s的值已经被赋值为hello,然后再执行打印语句,自然最后就是打印的hello了。
while 里面 wait 就会 执行循环后面的, 你如果将s = "hello" 换成 s ="he" 就会死锁。 while 普通用法的时候确实是,循环结束 才执行循环后面的语句。
因为这里执行wait,后面不会执行。