相关疑难解决方法(0)

你在Java中使用volatile关键字吗?

在今天的工作中,我遇到了volatileJava中的关键字.我不太熟悉它,我发现了这个解释:

Java理论与实践:管理波动性

鉴于该文章解释了相关关键字的详细信息,您是否使用过它,或者您是否曾经看到过以正确方式使用此关键字的情况?

java multithreading volatile keyword

628
推荐指数
13
解决办法
24万
查看次数

ArrayBlockingQueue - 如何"中断"正在使用.take()方法的线程

ArrayBlockingQueue在我的代码中使用了一个.客户端将等待元素可用:

myBlockingQueue.take();
Run Code Online (Sandbox Code Playgroud)

如果队列中没有元素并且take()无限期地等待元素变为可用,我如何"关闭"我的服务?这个方法抛出一个InterruptedException.我的问题是,我怎样才能"唤起"一个中断的异常以便take()退出?(我也考虑过notify(),但似乎我在这里没有帮助..)

我知道我可以插入一个特殊的"EOF/QUIT"标记元素,但这真的是唯一的解决方案吗?

更新(关于评论,指出另一个问题有两个解决方案):

上面提到的一个使用"中毒丸对象",第二个是Thread.interrupt():

myBlockingQueue.take()使用NOTThread(扩展Thread),而是工具Runnable.似乎Runnable没有提供.interrupt()方法?

我该Runnable怎么打断?

java concurrency

0
推荐指数
1
解决办法
2131
查看次数

标签 统计

java ×2

concurrency ×1

keyword ×1

multithreading ×1

volatile ×1