我正在根据一个数组实现一个并发循环队列,该数组在队列的头部和尾部使用单独的锁。队列中的每个节点如下所示:
private class Node<T>
{
public T item;
ReentrantLock lock = new ReentrantLock();
Node(){}
void lock() {lock.lock();}
void unlock() {lock.unlock();}
}
我无法在队列类的构造函数中创建队列。
public Queue(int capacity) {
items = (Node[]) new Object[capacity];//This line gives the problem
head = size = 0;
}
我在这里找到了解决方案,但是这段代码:
@SuppressWarnings("unchecked")
Node<T>[] slots = (Node<T>[]) new Node<?>[capacity];
给出以下编译器错误:
Cannot create a generic array of Queue<T>.Node<?>
我的问题是初始化泛型对象数组的正确方法是什么?