Hi,
ich habe eine BlockingQueue<Runnable> und wuerde gerne dass wenn ich ein Runnable hinzufuege und schon eines drin ist, dieses erstmal entfernt wird und dann das neue hinzugefuegt wird. Zu keinem Zeitpunkt sollte die Groesse der Queue also 1 uebersteigen.
Nun soll aber das entfernen des alten Runnable und das hinzufuegen des neuen Runnables 'atomical' sein. Es soll also nicht moeglich sein, dass ein anderer Thread nachdem ich das alte Runnable entferne selbst eines hinzufuegt und somit am Ende 2 Runnables in der Queue stecken. Wie kann ich das am besten synchronisieren?
so vielleicht?
synchronized (taskQueue) {
taskQueue.clear();
taskQueue.add(job);
}
ich habe eine BlockingQueue<Runnable> und wuerde gerne dass wenn ich ein Runnable hinzufuege und schon eines drin ist, dieses erstmal entfernt wird und dann das neue hinzugefuegt wird. Zu keinem Zeitpunkt sollte die Groesse der Queue also 1 uebersteigen.
Nun soll aber das entfernen des alten Runnable und das hinzufuegen des neuen Runnables 'atomical' sein. Es soll also nicht moeglich sein, dass ein anderer Thread nachdem ich das alte Runnable entferne selbst eines hinzufuegt und somit am Ende 2 Runnables in der Queue stecken. Wie kann ich das am besten synchronisieren?
so vielleicht?
synchronized (taskQueue) {
taskQueue.clear();
taskQueue.add(job);
}