小编Smi*_*min的帖子

CPU负载中的Java多线程

我有一个运行多个Java线程的应用程序的问题.应用程序运行许多工作线程,这些线程在输入队列中连续查看,如果队列中有消息,则将它们拉出并处理它们.

在这些工作线程中,有另一个验证线程被安排在固定的时间段执行检查以查看主机(应用程序运行的主机)是否仍处于"良好状态"以运行应用程序.该线程更新一个AtomicBoolean值,该值在工作线程开始窥视之前由工作线程验证,以查看主机是否正常.

我的问题是,在高CPU负载的情况下,负责验证的线程将花费更长的时间,因为它必须与所有其他线程竞争.如果在AtomicBoolean一段时间后没有得到更新,它会自动设置为false,这会给我带来一个令人讨厌的瓶颈.

我最初的方法是增加验证线程的优先级,但深入挖掘它我发现这不是一个保证行为,算法不应该依赖线程优先级来正常运行.

有人有任何其他想法吗?谢谢!

java multithreading thread-priority

9
推荐指数
1
解决办法
387
查看次数

标签 统计

java ×1

multithreading ×1

thread-priority ×1