采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
悟空老师,学习锁后我有两个疑问,盼解惑 1.自旋 和 非阻塞锁是一个概念吗? 我的理解同样无法获取锁,自旋是占着cpu不断检测锁,而非阻塞是让线程先去干别的事情,感觉不是一个概念啊。 2.我在看<<java并发编程的艺术>>时发现 它写的时lock锁对可中断锁的解释是 获取到锁的线程如果被中断会释放锁,可是您讲的是等待获取锁时可以响应中断。
谢谢老师
第一个问题,自旋和非阻塞,不是同样的概念,但是可以同时成立,又是自旋,又是非阻塞。
第二个问题,我看了《java并发编程的艺术》,我认为他描述的不准确:
你觉得哪种锁线程被中断就会释放锁?据我所示,是需要unlock才能释放锁的。我认为那本书的作者想表达的意思和我讲课的内容是一致的,但是他笔误了。
老师我这样理解对吗 引起lock锁的线程释放锁的是抛出没有try-catch的异常,而不是中断。而synchronized也可以因为抛异常而释放锁,所以这点并不能作为Lock锁相对于synchronized的升级。而体现lock锁可中断性的应该是等待获取锁时被中断会释放锁的特性。
我认同“体现lock锁可中断性的应该是等待获取锁时被中断会释放锁的特性”。 引起lock释放的是在finally里面的unlock。 这一点,synchronized是比Lock更好用的,因为synchronized发生异常会自动释放锁,但是Lock不会。
老师那使用lock锁时 等待线程可以强制要求获得锁的线程放弃锁吗
登录后可查看更多问答,登录/注册
JUC全方位讲解,构建并发工具类知识体系
1.1k 11
1.5k 10
1.1k 10
1.5k 9
购课补贴联系客服咨询优惠详情
慕课网APP您的移动学习伙伴
扫描二维码关注慕课网微信公众号