“StringBuffer est synchronisé (ou thread-safe) et StringBuilder est pas”, pourquoi n'est-ce StringBuffer méthodes plus lent?

Après la lecture de ce - Ce n'est "synchronisé"? j'étais toujours incapable de comprendre pourquoi StringBuffer serait plus lent que StringBuilder dans un thread-safe de l'environnement. Ce supplément de temps de travail ne StringBuffer avoir à le faire, il est plus lent?

Vous répondez à votre propre question. Le StringBuffer sont synchronisées de sorte qu'il a à faire plus de travail que l'autre n'ont à faire. Ce qui le rend pire, dans ce cas, c'est que 99% du temps ce n'est pas nécessaire.
... et le fil qui il a des liens à beaucoup explique pourquoi les coûts de synchronisation un peu plus de code, sans synchronisation.
Puisque le point de la question précédente n'était pas sur ce supplément de travail, une méthode synchronisée, j'ai eu à assumer, il peut être plus que ce qui a été mentionné dans les réponses (pour justifier les très véhémente " Ne pas utiliser StringBuffer sauf si vous avez besoin de Synchronisation des déclarations que j'ai rencontré). La réponse sélectionnée ci-dessous donne les informations dont j'avais besoin. Je pense que la question est justifiée.
pourrait être intéressant: Comment puis-je prouver par programme que StringBuilder n'est pas thread-safe?

OriginalL'auteur Shailesh Tainwala | 2011-06-09