Eri*_*ric 7 java multithreading interrupt synchronized
我有两个线程想要在同一个对象上进行同步.如果某个条件已满,则A
需要能够中断线程B
.这是两个线程做/应该做的一些伪代码.
public void run()
{
while(true)
{
//Do stuff
synchronized(shared)
{
//Do more stuff
if(condition)
{
B.interrupt();
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
public void run()
{
while(true)
{
try
{
//Do stuff
synchronized(shared)
{
//Do more stuff
}
}
catch(InterruptedException e)
{
continue;
}
}
}
Run Code Online (Sandbox Code Playgroud)
这是我无法解决的情况:
A
抓取共享资源并执行一些操作.B
到达synchronized块,等待A
释放其共享资源.A
,在做东西时,意识到线程B不应该有共享资源,并尝试中断线程B
.但是线程B
已经超过了InterruptedException
可以抛出的点数.我的问题是,有什么方法可以在线程等待synchronized
某事时中断线程吗?
对于这种事情,您应该使用类java.util.concurrent.locks
- 它们具有更多功能,包括可中断锁.
编辑:如果你不能使用这些类,那么看看jkff的答案 - 你的要求可以通过wait()
/ mechnism来满足notify()
,但很容易引入微妙的错误.
归档时间: |
|
查看次数: |
6384 次 |
最近记录: |