Que vous travailliez sur Java ou Android, vous ne pouvez pas éviter de rencontrer ce problème. En fait, vous n'avez généralement pas de difficulté avec cela pendant le processus de développement. Cette question est une question classique incontournable dans les entretiens. temps aujourd'hui, je vais le résumer.
Différences entre StringBuffer et StringBuilder
Les méthodes et fonctions de StringBuffer et StringBuilder sont complètement équivalentes, à l'exception des méthodes de StringBuffer La plupart d'entre eux sont modifiés avec le mot-clé synchronisé, ils sont donc thread-safe, prennent en charge les opérations simultanées et conviennent à une utilisation multi-thread. StringBuilder ne prend pas en charge les opérations simultanées, est linéairement dangereux et ne convient pas à une utilisation multithread. La classe StringBuilder nouvellement introduite n'est pas thread-safe, mais ses performances dans un seul thread sont supérieures à celles de StringBuffer. (Apprentissage recommandé : Tutoriel vidéo JAVA)
Ensuite, je colle directement le code du processus de test et des résultats, qui est clair en un coup d'œil :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 |
|
Regardez les résultats d'exécution :
1 2 3 4 5 |
|
Comme le montrent les résultats ci-dessus, quel que soit le multi-threading, lors de l'utilisation d'objets String (je mets Count/100), le temps d'exécution est plus long que les deux autres High, et la différence entre l'utilisation d'objets StringBuffer et l'utilisation d'objets StringBuilder est également évidente. On peut voir que si notre programme s'exécute dans un seul thread, ou s'il n'est pas nécessaire de prendre en compte les problèmes de synchronisation des threads, nous devons donner la priorité à l'utilisation de la classe StringBuilder si nous voulons garantir la sécurité des threads, c'est naturellement StringBuffer ;
Comme le montrent les résultats des tests de la liste suivante, à l'exception de la prise en charge différente du multi-threading, il n'y a presque aucune différence dans l'utilisation et les résultats de ces deux classes.
Pour plus d'articles techniques liés à JAVA, veuillez visiter la colonne Tutoriel de développement JAVA pour apprendre !
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!