Différence entre wait() et sleep()

Quelle est la différence entre un wait() et sleep() dans les Threads?

Est ma compréhension que wait()-ing Fil est toujours en mode de fonctionnement et les utilisations des cycles de CPU mais un sleep()-ing ne consomme pas de cycles CPU correct?

Pourquoi nous avons les deux wait() et sleep(): comment leur mise en œuvre varient à un niveau inférieur?

  • très bonne question. la sémantique de tous les deux sont faciles à confondre.
  • Très joli questions, mais ils sont 2 dans un. Pourquoi avons-nous deux n'est pas la même que la façon dont ils peuvent (et ne sont pas!) mis en œuvre à un niveau inférieur. J'ai répondu à ça aussi.
  • Supposons qu'un thread est dans un bloc synchronisé , et alors qu'il est dans la cpu de ce fil est pris et donné à un autre thread B. maintenant l'état dans lequel Un Thread va aller , les autres threads en attente sur ce bloc synchronisé maintenant venir à l'intérieur ?
  • Voici un bon article qui décrit cela: qat.com/using-waitnotify-instead-thread-sleep-java
  • son EXCATLY le contraire - sommeil "utilise" tous les de son PROCESSEUR disponible-cycles mais depuis le thread sera "en ATTENTE"de l'état-ces peut être donné si nécessaire - en fait, la plupart des systèmes d'exploitation automatiquement le rendement du cycle SI c'est possible, d'où votre fil ne créera aucune réelle de la charge CPU ... il va le faire sur les anciens systèmes d'exploitation, bien que. Objet.wait(), d'autre part n'utilise JAMAIS toutes cycles (tout en étant non notifiées) parce que c'est réalisé via le logiciel-les interruptions dans de nombreux cas - privé, transitoire & transparent serrures, mis en œuvre par la JVM. Fil de discussion.le sommeil est une mauvaise pratique.
  • est une mauvaise pratique" s'il est utilisé au lieu de l'attendre. voir stackoverflow.com/questions/17826651/... Mais bon commentaire par.

InformationsquelleAutor Geek | 2009-06-24