Implémentation d'applications Java à instance unique
De nombreuses applications telles que MSN et Windows Media Player sont conçues pour s'exécuter en tant qu'instances uniques, empêchant ainsi plusieurs instances de en cours de création pendant l'exécution de l'application. Bien que la classe Mutex fournisse cette fonctionnalité en C#, les développeurs Java ont une approche différente.
Solution Java utilisant le verrouillage de fichiers
La méthode recommandée pour implémenter une application Java à instance unique se fait via le verrouillage de fichiers. Voici le code :
private 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(); if (fileLock != null) { Runtime.getRuntime().addShutdownHook(new Thread() { public void run() { try { fileLock.release(); randomAccessFile.close(); file.delete(); } catch (Exception e) { log.error("Unable to remove lock file: " + lockFile, e); } } }); return true; } } catch (Exception e) { log.error("Unable to create and/or lock file: " + lockFile, e); } return false; }
Cette méthode repose sur le verrouillage des fichiers pour empêcher plusieurs instances de s'exécuter simultanément. Il crée un fichier de verrouillage acquis exclusivement par la première instance de l'application. Les instances ultérieures tentant d'acquérir le verrou échoueront, les empêchant ainsi de s'exécuter.
Lorsque l'application se termine, un hook d'arrêt est exécuté pour libérer le verrou et supprimer le fichier de verrouillage, assurant ainsi le nettoyage.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!