InicioHazlo Tu MismoUnica Instancia de Programa
Hola a todos, les dejo un pequeño codigo que he hecho para impedir que una aplicacion se ejecute mas de una vez. De modo que cuando el usuario quiera ejecutar mas de una vez la aplicacion que hemos desarrollado, NO PODRA HACERLO.

Clases que se ocupan:
# File
# RandomAccessFile
# FileLock



Sin mas demoras, les paso el codigo.


import java.io.File;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.nio.channels.FileLock;

public class SinglentonApp {

    public static void main(String[] args){
        if (lockInstance("file.lock")) {             // nombre del archivo a bloquear
                new NuestraClaseMain(args);   // Clase que arranca el programa
            }
        }
    }

    public static boolean lockInstance(final String lockFile) {
        try {
            final File file = new File(lockFile);
            final RandomAccessFile randomAccessFile = new RandomAccessFile(file, "rw");
            final FileLock fileLock = randomAccessFile.getChannel().tryLock();    // intenta bloquear el archivo
            if (fileLock != null) {          // si lo bloqueo
                Runtime.getRuntime().addShutdownHook(new Thread() {
                    @Override
                    public void run() {
                        try {
                            fileLock.release();                // Libera el bloqueo
                            randomAccessFile.close();   // Cierra el stream
                            file.deleteOnExit();               // Borra el archivo cuando se cierra el programa
                        } catch (IOException e) {
                            System.err.println(e);
                        }
                    }
                });
                return true;
            }
        } catch (IOException e) {
            System.err.println(e);
        }
        return false;
    }
}


Existen varias maneras de realizar lo mismo, tambien se podria ocupar un ServerSocket(numeroPuerto) donde se produciria un error al intentar abrir un puerto ya ocupado.

Espero que les sirva y cualquier pregunta estoy a su disposicion.
Saludos

(COMENTARIOS FUERA DE LUGAR SERAN BORRADOS Y BLOQUEADOS)
Datos archivados del Taringa! original
20puntos
1,048visitas
0comentarios
Actividad nueva en Posteamelo
0puntos
4visitas
0comentarios
Dar puntos:

Dejá tu comentario

0/2000

Autor del Post

d
darkilopez🇦🇷
Usuario
Puntos0
Posts3
Ver perfil →
PosteameloArchivo Histórico de Taringa! (2004-2017). Preservando la inteligencia colectiva de la internet hispanohablante.

CONTACTO

18 de Septiembre 455, Casilla 52

Chillán, Región de Ñuble, Chile

Solo correo postal

© 2026 Posteamelo.com. No afiliado con Taringa! ni sus sucesores.

Contenido preservado con fines históricos y culturales.