我有多个线程正在运行,需要附加到同一个队列。这个队列被分成多个变量,所以有效地,我正在调用一个函数,该函数在某个位置 i 处附加到每个变量。从http://www.youtube.com/watch?v=8sgDgXUUJ68&feature=c4-overview-vl&list=PLBB24CFB073F1048E显示我为每种方法添加锁,如此处所示。http://www.caveofprogramming.com/java/java-multiple-locks/。为数组中的 100,000 个对象创建锁似乎并不有效。在java中,假设我有一个管理大量对象队列的对象。如何正确同步 addToQueue,而不会通过同步方法来牺牲性能,只是我要附加到的 floatQueue 和 intQueue 中的位置?
class QueueManager {
private float[] floatQueue;
private int[] intQueue;
private int currentQueueSize;
private int maxQueueSize;
QueueManager(int sizeOfQueue) {
intQueue = new int[sizeOfQueue];
floatQueue = new float[sizeOfQueue];
currentQueueSize = 0;
maxQueueSize = sizeOfQueue;
}
public boolean addToQueue(int a, float b) {
if (currentQueueSize == maxQueueSize) {
return false;
}
else{
intQueue[currentQueueSize] = a;
floatQueue[currentQueueSize] = b;
currentQueueSize++;
return true;
}
}
}