Quelle est la meilleure méthode pour extraire des objets d'un BlockingQueue, dans un programme concurrent, sans atteindre une condition de concurrence? Je fais actuellement ce qui suit et je ne suis pas convaincu qu'il est la meilleure méthode:Meilleure méthode pour obtenir des objets à partir d'un BlockingQueue dans un programme concurrent?
BlockingQueue<Violation> vQueue;
/*
in the constructor I pass in a BlockingQueue object
full of violations that need to be processed - cut out for brevity
*/
Violation v;
while ((v = vQueue.poll(500, TimeUnit.MILLISECONDS)) != null) {
// do stuff with the violation
}
Je n'ai pas encore touché une condition de course ... mais je ne suis pas trop sûr que ce soit vraiment sûr .