# java.lang.NullPointerException at java.util.LinkedList.writeObject



## Vogi (23. Aug 2010)

Hallo, 
ich versuche zwischen einem Server und einem Client Objekte zu verschicken, dies mache ich folgendermaßen:


```
for(;;){
				Thread.sleep(0);
				if(zuVerschickendes.size() > 0){
					objectOutputStream.writeObject(zuVerschickendes.get(0));
					objectOutputStream.reset();
					zuVerschickendes.removeFirst();
                                }
}
```

Dies funtkioniert auch meistens tadellos, manchmal kommt aber plötzlich folgende Exception:

java.lang.NullPointerException at java.util.LinkedList.writeObject
...

Was hat dies zu bedeuten?


----------



## XHelp (23. Aug 2010)

Dass du vllt. mit get(0) null zurückbekommst?


----------



## Vogi (23. Aug 2010)

kann eigentlich nicht sein, ich adde zu der Liste nie ein null-Objekt, und es scheitert, wie ich getestet habe auch einer der Prüfung : if(zuVerschickendes.get(0) != null) vor dem writeObject


----------



## tuxedo (24. Aug 2010)

Schau doch einfach in den Stacktrace.. der verrät dir in welcher Zeile die NPE auftritt. Dann benutzt du den debugger und schaust welche Variable, bzw. welcher Aufruf in dieser Zeile "null" ist/ergibt.

Versteh nicht so recht warum eine NPE immer solche Fragen und unklarheiten mit sich bringt....?! ???:L


----------



## Vogi (24. Aug 2010)

naja, das Problem ist, das diese NullPointerException nur etwas ein mal in einer halben Stunde Laufzeit auftritt. Mit dem Debugger habe ich noch keine Erfahrung, aber ich werde mir ihn nun mal anschauen.


----------



## XHelp (24. Aug 2010)

du könntest auch in ruhe anhand des Quelltextes überlegen, wo NPE auftreten könnte


----------



## Murray (24. Aug 2010)

Ich tippe mal: es könnte am nicht synchronisierten Zugriff auf die Liste liegen; die Liste wird ja offenbar aus einem anderen Thread heraus befüllt.


----------



## Kr0e (24. Aug 2010)

Das denke ich auch, nimm mal eine ConcurrentLinkedQueue, damit gibts das Problem bestimmt nicht mehr ...
Dann könntest du dir auch diese doofe endlos-Schleife sparen  Thread.sleep(0) macht nix, das ist dir schon klar, oder ?


----------



## Vogi (24. Aug 2010)

danke mal für eure antworten, es scheint funktionieren, auch wenn ich das natürlich noch nicht ganz sicher sagen kann. Das mit der Endlosschleife ist aber immer noch nötig, da es ja auch manchmal vorkommt, das die Liste für einige Zeit leer und erst dann wieder gefüllt wird, oder wie hast du das gemeint?


----------



## Kr0e (24. Aug 2010)

Ich meinte eigentlcih die LinkedBlockingQueue, sry.. Name eiskalt verwechselt... LinkedBlockingQueue hat die Methode take().
Wenn die liste leer ist, schläft der Thread solange bis ein Element in die Liste kommt... Endloschleife bringt 100% CPU Last.. Bzw. 25% auf einem Quadcore, aber das kann nicht gewollt sein


----------



## Vogi (24. Aug 2010)

ah, danke,
das ist dann natürlich optimal.


----------

