Bonne façon de synchroniser la liste de tableaux en java

Je ne suis pas sûr si c'est le bon moyen de synchroniser mon ArrayList.

J'ai un ArrayList in_queue qui est transmis à partir de la registerInQueue fonction.

ArrayList<Record> in_queue = null;

public void registerInQueue(ArrayList in_queue)
{
    this.in_queue = in_queue;
}

Maintenant, je suis en train de le synchroniser. Est-ce sychronizing mon in_queue objet correctement?

List<Record> in_queue_list = Collections.synchronizedList(in_queue);

synchronized (in_queue_list) {
    while (in_queue_list.size() > 0) {
        in_queue_list.remove(0);
    }
}
  • Vous ne pouvez pas vraiment de mise à niveau, d'une liste synchronisée parce que vous êtes passé à une référence, de sorte que vous n'avez pas vraiment le posséder. Quelle que soit vous a donné la référence pourrait toujours modifier la liste initiale, il est passé à vous en même temps. Indépendamment de ce que la synchronisation vous permet d'ajouter, sauf si c'est explicitement connu que la liste va être gardé par sa intrinsèque de verrouillage.
  • Je vais mettre un bloc synchronisé autour de toute opération sur la file d'attente. Merci!
InformationsquelleAutor bob | 2009-09-16