我有一种情况,我想使用Java的固定线程池的扩展。我有N组可运行的对象,我想争夺资源。但是,我希望用于保持不变的线程总数。我想这个工作的方式在这里概述
首先,这样的事情已经存在吗?第二,如果没有,我很担心写自己的,因为我知道写自己的线程池可能很危险。任何人都可以指出我自己编写的一些好例子。
答案 0 :(得分:1)
您最好的选择可能是创建自己的队列实现,循环遍历其他队列。例如(在伪代码中):
类CyclicQueue { 队列队列[]; int current = 0;
CyclicQueue(int size) {
queues = new Queue[size];
for(int i=0; i<size; i++)
queues[i] = new LinkedList<T>();
}
T get() {
int i = current;
T value;
while( (value = queues[i].poll() == null) {
i++;
if(i == current)
return null;
}
return value;
}
}
当然,有了这个,如果你想要阻止,你需要自己添加。
在这种情况下,您可能希望每个队列都有一个自定义队列,它可以通知父队列已添加值。