社区
多编程的课程社区_NO_1
2021版Java多线程教程
帖子详情
中断等待锁的线程(lockInterruptibly)
y1笑而过song
2023-01-12 21:42:42
课时名称
课时知识点
中断等待锁的线程(lockInterruptibly)
2021版Java多线程教程23:中断等待锁的线程(lockInterruptibly)
...全文
121
回复
打赏
收藏
中断等待锁的线程(lockInterruptibly)
课时名称课时知识点中断等待锁的线程(lockInterruptibly)2021版Java多线程教程23:中断等待锁的线程(lockInterruptibly)
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
2021版Java多
线程
教程23:
中断
等待
锁
的
线程
(
lock
Interrupt
ibly
)
2021版Java多
线程
教程23:
中断
等待
锁
的
线程
(
lock
Interrupt
ibly
) 代码 Task.class: package main; import java.util.concurrent.
lock
s.
Lock
; import java.util.concurrent.
lock
s.Reentrant
Lock
; public class Task implements R...
lock
Interrupt
ibly
()方法能够
中断
等待
获取
锁
的
线程
lock
Interrupt
ibly
()方法能够
中断
等待
获取
锁
的
线程
lock
Interrupt
ibly
()方法是一种可
中断
地获取
锁
的方式,与
lock
()方法类似,但是在
等待
获取
锁
的过程中,如果当前
线程
被
中断
,则会抛出
Interrupt
edException异常
当一个
线程
调用
lock
Interrupt
ibly
()方法尝试获取
锁
时,如果
锁
不可用,该
线程
会被阻塞,但是它会响应
中断
,即如果其他
线程
中断
了该
线程
,它会立即抛出
Interrupt
edException异常,从而
中断
等待
获取
锁
的过程。
lock
()方法是一种阻塞方式,当一个
线程
调用
lock
()方法尝试获取
锁
时,如果
锁
不可用,该
线程
会被阻塞,直到获取到
锁
为止。
lock
()方法和
lock
Interrupt
ibly
()方法是Java中用控制并发访问的两种方式,它们之间的区别在于对于
线程
的
中断
方式。
Java多
线程
- 可
中断
锁
与不可
中断
锁
可
中断
锁
是指抢占过程可以被
中断
的
锁
,JUC的显式
锁
(如Reentrant
Lock
)是一个可
中断
锁
。不可
中断
锁
是指抢占过程不可以被
中断
的
锁
,如Java的synchronized内置
锁
就是一个不可
中断
锁
。
锁
的可
中断
抢占: 在JUC的显式
锁
Lock
接口中,有以下两个方法可以用于可
中断
抢占: (1)
lock
Interrupt
ibly
() 可
中断
抢占
锁
抢占过程中会处理Thread.
interrupt
()
中断
信号,如果
线程
被
中断
,就会终止抢占并抛出
Interrupt
edException异常。 (2)try
Lock
(
可
中断
锁
可
中断
锁
:顾名思义,就是可以相应
中断
的
锁
。 在Java中,synchronized就不是可
中断
锁
,而
Lock
是可
中断
锁
。 如果某一
线程
A正在执行
锁
中的代码,另一
线程
B正在
等待
获取该
锁
,可能由于
等待
时间过长,
线程
B不想
等待
了,想先处理其他事情,我们可以让它
中断
自己或者在别的
线程
中
中断
它,这种就是可
中断
锁
。 在前面演示
lock
Interrupt
ibly
()的用法时已经体现了
Lock
的可
中断
性。
线程
在调用
lock
方法来获得另一个
线程
所持有的
锁
的时候,很可能发生阻塞。应该更加谨慎地申请
锁
。tryLoc..
多编程的课程社区_NO_1
1
社区成员
125
社区内容
发帖
与我相关
我的任务
多编程的课程社区_NO_1
“人人都是程序员”机构讲师
复制链接
扫一扫
分享
社区描述
“人人都是程序员”机构讲师
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章