for*_*t17 1 java concurrency multithreading
在我的应用程序中,数据生成速度(存储在 concurrentLinkedQueue 中)大于我可以使用单线程消耗的速度。
我决定从创建 4 个线程来使用数据开始,以防止我的应用程序出现“内存不足异常”。
问题 :
内存一致性影响:与其他并发集合一样,在将对象放入 ConcurrentLinkedQueue 之前线程中的操作发生在另一个线程中从 ConcurrentLinkedQueue 访问或删除该元素之后的操作之前。
我认为你不应该迭代而是创建 4 个线程,每个轮询队列中的数据,以便轮询的数据将被删除或换句话说被消耗
// your queue
ConcurrentLinkedQueue concurrentLinkedQueue = new ConcurrentLinkedQueue();
// create 4 Threads
for (int i = 0; i < 4; i++) {
new Thread(() -> {
while (!concurrentLinkedQueue.isEmpty()) {
// consume element
var element = concurrentLinkedQueue.poll();
// do something with element
// here
}
}).start();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3219 次 |
| 最近记录: |