Mam sobie
LinkedBlockingQueue<Message> queue = new LinkedBlockingQueue<>();
Ten Message, to mój Message. Po Message dziedziczy 'SimpleMessage'.
W pewnym momencie kodu mam:
addMessage(Message message){
boolean success = false;
... //jakieś sprawdzenia
success = queue.offer(message);
...
}
I teraz tak... Sprawdzam to nawet w debuggerze, metoda na pewno dostaje obiekt klasy SimpleMessage i ten obiekt na pewno jest jeszcze pod zmienną message w momencie wywołania 'queue.offer(message);'. Nie ma nawet, gdzie zniknąć, bo sprawdzenia, to tylko ify i logowanie (które wyraźnie zapisują, że ten obiekt tam jest).
Metoda zwraca true, inny wątek się wybudza, żeby wyciągnąć dane z kolejki i ... wyciąga null.
Sprawdzałem w debuggerze i zaraz po dodaniu do kolejki, jej zawartość ciągle przedstawia się jako [], pierwszy element to null, ostatni to null i linki "next" w pierwszym i ostatnim, to ciągle null.
Próbowałem też metody AbstactQueue.add(..); i ciągle to samo.
Kolejka na początku jest pusta, metoda dodająca informuje, że dodała, ale obiektu nie ma. Ktoś ma pomysł, co się stało?
Testowane na Ubuntu 64bit, Java od Oracle, wersja 1.7.0_40. Resetowałem komputer i nie pomogło. Chyba skończyły mi się pomysły...