StringBuffer vs StringBuilder

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);
 }

}