XML Java

import java.util.Queue;
import java.util.concurrent.ConcurrentLinkedQueue;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import org.w3c.dom.Document;
public class Utils {
  private static DocumentBuilderFactory dbf;
  private static Queue builders = new ConcurrentLinkedQueue();
  public static DocumentBuilder getBuilder() throws ParserConfigurationException {
    DocumentBuilder builder = (DocumentBuilder) builders.poll();
    if (builder == null) {
      if (dbf == null) {
        dbf = DocumentBuilderFactory.newInstance();
        dbf.setNamespaceAware(true);
      }
      builder = dbf.newDocumentBuilder();
    }
    return builder;
  }
  public static void releaseBuilder(DocumentBuilder builder) {
    builders.add(builder);
  }
  /**
   * Return a new document, ready to populate.
   * 
   * @return
   * @throws ParserConfigurationException
   */
  public static Document newDocument() throws ParserConfigurationException {
    DocumentBuilder builder = getBuilder();
    Document doc = builder.newDocument();
    releaseBuilder(builder);
    return doc;
  }
}