课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
程序员在学习线程安全知识的时候会接触到关于锁的概念与用法,而今天我们就通过案例分析来了解一下,java编程锁的应用方法都有哪些。
1)lock()
获取锁,有以下三种情况:
锁空闲:直接获取锁并返回,同时设置锁持有者数量为:1;
当前线程持有锁:直接获取锁并返回,同时锁持有者数量递增1;
其他线程持有锁:当前线程会休眠等待,直至获取锁为止;
2)lockInterruptibly()
获取锁,逻辑和lock()方法一样,但这个方法在获取锁过程中能响应中断。
3)tryLock()
从关键字字面理解,这是在尝试获取锁,获取成功返回:true,获取失败返回:false,这个方法不会等待,有以下三种情况:
锁空闲:直接获取锁并返回:true,同时设置锁持有者数量为:1;
当前线程持有锁:直接获取锁并返回:true,同时锁持有者数量递增1;
其他线程持有锁:获取锁失败,返回:false;
4)tryLock(longtimeout,TimeUnitunit)
逻辑和tryLock()差不多,只是这个方法是带时间的。
5)unlock()
释放锁,每次锁持有者数量递减1,直到0为止。所以,现在知道为什么lock多少次,就要对应unlock多少次了吧。
6)newCondition
返回一个这个锁的Condition实例,可以实现synchronized关键字类似wait/notify实现多线程通信的功能,不过这个比wait/notify要更灵活,更强大!
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请加danei0707学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。