Java: Est - `while (true) { ... } " en boucle dans un thread de mauvais? Quelle est l'alternative?

Est while (true) { ... } boucle dans les threads mauvais? Quelle est l'alternative?

Mise à jour; ce que j'essaie de...

J'ai ~de 10 000 threads, chacun de consommer les messages de leurs files d'attente privées. J'ai un thread qui produit des messages un par un et de les mettre dans la bonne file d'attente du consommateur. Chaque thread consommateur est en boucle, la vérification d'un message s'affiche dans la file d'attente et de la traiter.

À L'Intérieur Consumer.java:

@Override
public void run() {
    while (true) {
        Message msg = messageQueue.poll();
        if (msg != null) {
            ... //do something with the message
        }
    }
}

Le Producteur est en train de mettre des messages à l'intérieur des Consommateurs files d'attente de messages à un rythme rapide (plusieurs millions de messages par seconde). Les consommateurs devraient traiter ces messages aussi vite que possible!

Remarque: le while (true) { ... } est terminée par un KILL message envoyé par le Producteur de son dernier message. Cependant, ma question est sur la bonne façon de le faire ce passage de message...

Veuillez voir la nouvelle question, au sujet de cette conception.

  • Pourquoi ne pas vous donner plus de détails sur ce que vous essayez d'atteindre et nous allons vous dire si il y a une meilleure façon de le faire.
  • @Ryan: Mis à jour; s'il vous plaît prendre un coup d'oeil!
  • 10000 fils semble être une mauvaise idée, car il peut y avoir des frais généraux associés à chaque thread...
  • @Colen: Veuillez voir ma nouvelle question, car je pensais que c'était une mauvaise idée aussi... Quelle est l'alternative? stackoverflow.com/questions/3367383/...
  • La surcharge de 10k threads de l'extrême
  • Willi Schönborn: Alors, quelle est l'alternative?
  • si vous utilisez un certain temps au lieu d'une instruction if à l'intérieur de votre thread - est-ce à dire que vous créez une nouvelle boucle à chaque fois que votre thread s'exécute?

InformationsquelleAutor Mr. Burgundy | 2010-07-29