Hallo,
eine BlockingQueue ist ja threadsafe bzgl. Operationen wie add() und take().
Nun wuerde ich fuer einige Experimente die ich damit mache gerne ausgeben koennen wie gross z.B. die Queue ist usw. nachdem ich z.B. ein add() ausgefuehrt habe.
Leider ist das alles nicht 'atomic'. Soll heissen, zwischen meinem add() und System.out.println(queue.size()) kann eine Menge passieren (eine anderer Thread fuegt der Queue Elemente hinzu bzw. entfernt diese). Ich weiss also nicht wie gross die Queue unmittelbar vor bzw. nach dem add() war.
Kann ich irgendwie Code 'uebergeben' der vor bzw. nach dem add() ausgefuehrt wird, allerdings innerhalb des 'Locks' des add() Aufrufs?
Bzw. gibt es eine andere Loesung fuer dieses Problem?
eine BlockingQueue ist ja threadsafe bzgl. Operationen wie add() und take().
Nun wuerde ich fuer einige Experimente die ich damit mache gerne ausgeben koennen wie gross z.B. die Queue ist usw. nachdem ich z.B. ein add() ausgefuehrt habe.
Leider ist das alles nicht 'atomic'. Soll heissen, zwischen meinem add() und System.out.println(queue.size()) kann eine Menge passieren (eine anderer Thread fuegt der Queue Elemente hinzu bzw. entfernt diese). Ich weiss also nicht wie gross die Queue unmittelbar vor bzw. nach dem add() war.
Kann ich irgendwie Code 'uebergeben' der vor bzw. nach dem add() ausgefuehrt wird, allerdings innerhalb des 'Locks' des add() Aufrufs?
Bzw. gibt es eine andere Loesung fuer dieses Problem?