Hallo Zusammen
Ich versuche gerade eine LinkedList zu synchronisieren und habe das Problem, dass ich "head" nicht locken kann, ich bekomme eine NullPointerException. Kann mir bitte jemand weiterhelfen, mein Programm so umzustellen, dass das funktioniert?
Das ist die Klasse Node:
Hier der Konstruktor der LinkedList Klasse
Und hier die Methode "add" die ich synchronisieren möchte
Ich versuche gerade eine LinkedList zu synchronisieren und habe das Problem, dass ich "head" nicht locken kann, ich bekomme eine NullPointerException. Kann mir bitte jemand weiterhelfen, mein Programm so umzustellen, dass das funktioniert?
Das ist die Klasse Node:
Java:
public class Node<E> {
public Object element;
public Node<E> next;
Lock lock = new ReentrantLock();
public Node(Object e, Node<E> n) {
element = e;
next = n;
}
}
Hier der Konstruktor der LinkedList Klasse
Java:
public class LinkedListSynchronizedElement<E> {
int size;
Node<E> prev;
private Node<E> head;
public LinkedListSynchronizedElement() {
size = 0;
head = null;
}
Und hier die Methode "add" die ich synchronisieren möchte
Java:
public void insert(int index, Object elem) {
// Create the new node
Node<E> newNode = new Node<E>(elem, null);
newNode.lock.lock();
head.lock.lock();
// Beginning of List
if (index == 0) {
newNode.next = head;
head = newNode;
} else {
Node<E> prev = nodeAt(index - 1);
newNode.next = prev.next;
prev.next = newNode;
newNode.lock.unlock();
}
size++;
}