课程
/后端开发
/Java
/深入浅出Java多线程
锁在while循环外面 如果一直循环 锁不被释放 其他线程怎么可以拿到锁呢
2017-07-06
源自:深入浅出Java多线程 4-3
正在回答
当while判断满足时,进入wait,将当前线程暂停并且释放资源等待后面的线程,当下个线程进入的时候,判断条件不满足时,执行notifyall,唤醒所有线程,然后如果等待中的线程获得执行资格时,当前线程将会继续执行while。不知道这样理解对不对。
声明:解释转自 sxian_wang 的回答
先明白两个概念:锁池和等待池。synchronized是锁池,wait、notify、notifyAll是等待池。等待池的对象是不会竞争锁的,当notifyAll后,等待池中的线程会被唤醒进入到该线程的锁池中重新竞争对象锁,重新获得锁后的对象会从wait后继续执行代码,其他对象会被阻塞,而不是wait。被阻塞的对象会等待下一次被唤醒(notify、notifyAll)。另外,notify不是线程安全的,notifyAll才是。
举报
带你一起深入浅出多线程,掌握基础,展望进阶路线
2 回答同步,锁问题
2 回答求解这段代码的意思?
1 回答能详细解释下这段代码吗?
1 回答线程交互方式 :互斥与同步是什么?没听懂
1 回答java 线程同步