黑马程序员技术交流社区

标题: 有关wait的问题 [打印本页]

作者: hyace    时间: 2014-4-1 11:42
标题: 有关wait的问题
在线程被wait的时候就释放对象锁的话,此时的synchronized是不是就失灵了?此时其他线程都可以进入同步区?那synchronized还有啥用?

作者: 林发明    时间: 2014-4-1 13:09
首先,同步锁的核心作用是保证在同步区中只能有一个线程在执行,
其次,像你说的这种情况,假如A线程进入同步区后,被wait了,它会释放锁,让其他的线程进入同步区,如果不释放,其他线程都进不来 ,整个程序就停掉了。假如当A线程释放锁后,B线程进入同步区,这时可能还有C线程、D线程等等要进入同步区是进不去的,因为现在这个时刻B线程持有锁,所以这个synchronized还是有用的,它只是对于被wait的A线程没有用,对于其他线程都有用。
作者: hyace    时间: 2014-4-1 14:16
林发明 发表于 2014-4-1 13:09
首先,同步锁的核心作用是保证在同步区中只能有一个线程在执行,
其次,像你说的这种情况,假如A线程进入同 ...

是不是wait只能用在synchronized里,否则就会抛异常?




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2