Disons que je veux "mettre en pause" un thread afin que les autres threads puissent fonctionner plus efficacement. Quelle est la période de sommeil minimum avant de bloquer devient inutile (ou presque inutile)?Quelle est l'efficacité de Thread.sleep (long)?
Répondre
Je m'attendrais à ce que toute quantité de sommeil soit au moins l'équivalent fonctionnel de l'appel yield()
donc il n'y a jamais un point où il est "inutile". Il y a certainement un point où de petites valeurs sont essentiellement indiscernables parce que le temps d'attente pour que le système d'exploitation revienne à votre thread est plus long qu'un petit temps de sommeil. Cela se produit probablement quelque part dans la gamme 5-10, mais bien sûr, il sera spécifique à l'OS.
C'est difficile à généraliser et cela dépend de votre problème spécifique. Mais, je n'utiliserais pas toi-même pour gérer les discussions. Vous pouvez mettre les discussions dans un Executor
et laissez-les les gérer. Vous pouvez également utiliser une PriorityQueue pour commander vos tâches. Thread.sleep (0) entraînera le thread à céder, permettant à d'autres threads ayant la même priorité ou une priorité plus élevée de s'exécuter.
Cela dépend de la priorité des threads ... D'après ce que je comprends, Thread.sleep génère efficacement le thread et définit sa priorité sur la plus faible pour la durée de la veille.
Comme d'autres l'ont mentionné, vous ne devriez probablement pas utiliser ceci pour planifier vos threads manuellement. Il est utile cependant, si vous avez partagé des mutex, vous pouvez les libérer et ensuite faire un Thread.sleep pour aider à résoudre une situation de threadlock.
Il ne s'agit pas de planification; Il s'agit de gérer les ressources plus efficacement. – someguy
- 1. Quelle est la différence entre Thread.Sleep (timeout) et ManualResetEvent.Wait (timeout)?
- 2. Quelle est la différence entre C# Thread.Sleep() et threadreference.Join()?
- 3. InterruptedException from Thread.sleep()
- 4. Utilisation de Thread.Sleep() dans un service Windows
- 5. Quelle est la meilleure façon d'afficher un fichier long?
- 6. Problème avec Thread.Sleep
- 7. ManualResetEvent contre Thread.Sleep
- 8. Plus précis Thread.Sleep
- 9. Quelle est la différence entre unsigned long/long/int en c/C++?
- 10. Test avec Thread.sleep
- 11. Pool d'objets partagés sans Thread.Sleep?
- 12. Thread.currentThread(). Sleep (temps) v/s Thread.sleep (heure);
- 13. Est-ce que des réveils parasites affectent Thread.sleep?
- 14. Windows Service doit attendre, Thread.Sleep?
- 15. Quelle pourrait être l'origine de l'exception "Path Too Long"?
- 16. Pourquoi Stream.Position est-il long
- 17. Quelle est la meilleure façon d'afficher à long nom de fichier dans UITablView
- 18. Pointeur long à corde large constante, quelle est la fonction de la Longue ici?
- 19. 'long long int' est interprété comme 'long int'. Comment puis-je contourner cela?
- 20. Python long type C 'long long'
- 21. Spécificateur de format pour « long long »
- 22. Comment éviter Thread.Sleep lors de l'utilisation de WPF Automation Framework?
- 23. Comment trouver le lat/long qui est x km est/ouest d'un lat/long donné?
- 24. long long vs multiplication int
- 25. Quel est l'équivalent de Thread.sleep() de Java dans Objective-C/Cocoa?
- 26. Quelle est la différence entre le mode court adressage et à long mode d'adressage
- 27. Quelle est la différence entre "int" et "uint"/"long" et "ulong"?
- 28. C#: DBConnection.Open() timeout est trop long
- 29. Comment fonctionne Thread.sleep() lorsqu'il est appelé à partir de plusieurs threads
- 30. Gestionnaire de travail utilisant thread.sleep ou delay ne fonctionne pas
Je ne pense pas que les Executors peuvent prédire quand un thread est inactif (ou peuvent-ils?) – someguy