Ich implementiere das Producer/Consumer-Muster und verwende die LinkedTransferQueue-Sammlung.Wie kann ich die Größe der LinkedTransferQueue einschränken?
Ich möchte nicht, dass mein Hersteller bestimmte Speicherbeschränkungen überschreitet.
Derzeit bin ich diesen Scheck, sondern aus den documentation, Größe Betrieb erfordert O (N) Traversal. Für meine aktuelle Implementierung ist es in Ordnung,
aber gibt es einen besseren Ansatz als die, die ich derzeit bin?
LinkedTransferQueue<String> producerStringLinkedTransferQueue = new LinkedTransferQueue<String>();
if (producerStringLinkedTransferQueue.size() <= 5000) {
producerStringLinkedTransferQueue.add(<some data>);
}
Dies ist sicherlich nicht der Weg, es zu tun. ["die aktuelle Anzahl der Elemente zu bestimmen ... kann ungenaue Ergebnisse melden, wenn diese Sammlung während der Traversierung geändert wird."] (https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ LinkedTransferQueue.html) – Michael
vereinbart :), da ich nicht sehr streng mit der Größe Validierung sein muss, habe ich diesen Ansatz verwendet, aber es sollte nicht verwendet werden, wenn die Größe Validierung sehr streng ist –