Hola...
Te explico lo q hace la aplicación (Netbeans), el programa debe estar siempre corriendo y revisando en un directorio la existencia de un archivo, cada vez q encuentre algo, se conecta a un servidor donde tengo otra aplicación(JBuilder), realiza una consulta y con el resultado manda a ejecutar otra aplicación (NetBeans).
en el main: frmprincipal.GetInstance().setVisible(true); es una pantalla q tiene dos botones:Iniciar y Detener... Al hacer click en Iniciar -> hilo.start().
en el metodo run: 
 while (true) {
   LeerArchivo a=new LeerArchivo();
   encontrado=a.isEncontrado();
   if (encontrado) {
    valor = a.getValor();
    pos = valor.indexOf(".");
    if (pos > 0) {
      Long id_odt = new Long(valor.substring(0, pos));
      try {
       Conexion con1 = new Conexion();
       Context c = con1.Conectar(ServidorProcesosProp.INITIAL_CONTEXT_FACTORY_VALUE, ServidorProcesosProp.URL_PKG_PREFIXES_VALUE);
       Object result1 = c.lookup("ManejarCubo");
       ManejarCuboHome home1 = (ManejarCuboHome) javax.rmi.PortableRemoteObject.narrow(result1, ManejarCuboHome.class);
       ManejarCubo accionesCubo = home1.create();
      CuboOdtData odt = accionesCubo.consultarOdtCubo(id_odt);
      param = odt.getC_ruta_exe() + " " + odt.getId_odt().toString();
      con1.Desconectar(c);
    } 
   catch (NamingException ex) {
      LOG.addAppender(appender);
      LOG.error("ServidorProceso: " + ObtenerFecha.ObtenerFechaHoraDelSistemaATimestamp().toString() + " " + ex.getMessage());
    }
    try {
       Runtime obj = Runtime.getRuntime();
       Process proc = obj.exec(param);
     } 
     catch (Exception e) {
        LOG.addAppender(appender);
        LOG.error("ServidorProceso: " + ObtenerFecha.ObtenerFechaHoraDelSistemaATimestamp().toString() + " " + e.getMessage());
     }
     BorrarArchivo b=new BorrarArchivo(valor);
     valor = "";
  }
System.out.print("Hilo ejecutandose");
 }
}
el punto es q a pesar de no encontrar ningun archivo se consume el 100% del uso del cpu...
Gracias de antemano....