java - 线程池通信

标签 java c multithreading concurrency pthreads

我们正在开发一个 n-tire 系统,其中有 +10 个模块可用,每个模块都完成特定的工作。
每个模块都有自己的线程池和线程管理器。
整个系统运行在JBoss AS上,部分模块使用原生代码(pthread for native guys)
一切看起来都很完美,除了我们最近发现其中一个模块在特定时间(高峰时间)工作非常慢,原因是因为该模块有很多工作,我也检查并实现了整个线程相关模块线程池正常工作。
但是当一个模块正在努力工作时,另一个模块有点空闲,或者不是很忙。
问题:
有没有可能把线程池a的线程借到线程池b,辛苦了之后还回来?!我用 ExecutorService 做了很多工作,但没有帮助,或者至少我不明白该怎么做。
请帮忙,谢谢。

最佳答案

线程数量与工作负载分配关系不大。

如果其中一个模块是瓶颈,并且您的机器已经饱和,您必须实现自己的机制,以确保该模块在给定时间使用最多的资源。

一个简单的方法是监控关键模块中等待处理的数据量,如果超过某个阈值则暂停其他模块的工作。

另一种方法是为所有数据实现一个优先级队列,其中根据数据的类型和它已经在队列中等待的时间来确定数据的优先级。

关于java - 线程池通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19634480/

相关文章:

c - Cuda 中的算法

c - 在 RPC 代码中获取 memcheck 错误

python - 在 Python 中处理来自多个套接字的传入数据

java - Netbeans 从命令行更新生成的项目文件

java - Velocity - 调用 init() 时的 NPE

java - 使用嵌套 For 循环来访问 "Add"两个包含数字值的字符串数组

java - 从返回的匿名内部类调用 @Bean 方法的线程安全性

c - uClibc/glibc 是否提供任何将错误重定向到系统日志的功能?

c++ - 如何使用同一个函数C++实例化多个线程

c++ - 在多线程程序中创建 OpenGL 结构?