En las últimas versiones de Java (Java 5 +) se ha añadido una nueva clase que complementa a StringBuffer y String es el caso de la clase StringBuilder . Anteriormente a su llegada la clase String tenía la ventaja de ser una clase “thread safe” . Es decir al tratarse de una clase que genera objetos inmutables no había que preocuparse de cuantos hilos accedieran a ella. Sin embargo la otra clase con la que hemos trabajado StringBuffer es una clase cuyos métodos son “synchronized” es decir solo se admite que un único Thread acceda a ella de forma directa .
Hay situaciones en las cuales esto es positivo pero hay otras muchas en las que no es necesario .Por ello Java incluye una clase identica a StringBuffer pero que no esta sincronizada y se denomina StringBuilder . En la mayoria de los casos será mas util utilizar esta clase que la anteriormente comentada.
Vamos a ver un ejemplo en código:
package com.arquitecturajava;
public class Principal03 {
public static void main(String[] args) {
StringBuilder cadena=new StringBuilder();
long numero1= System.currentTimeMillis();
for(int i=0;i<10000;i++) {
cadena.append("hola");
cadena.append("que");
cadena.append("tal");
cadena.append("estas");
}
long numero2=System.currentTimeMillis();
System.out.println(numero2-numero1);
}
}