Rumah >Java >javaTutorial >Bagaimana untuk Memastikan Hanya Satu Contoh Aplikasi Java Berjalan pada Satu Masa?

Bagaimana untuk Memastikan Hanya Satu Contoh Aplikasi Java Berjalan pada Satu Masa?

Susan Sarandon
Susan Sarandonasal
2024-12-17 15:12:11331semak imbas

How to Ensure Only One Instance of a Java Application Runs at a Time?

Mencapai Aplikasi Contoh Tunggal dalam Java

Berbeza dengan aplikasi tertentu seperti MSN dan Windows Media Player, yang hanya mencipta satu tika apabila dilaksanakan semasa berjalan, aplikasi Java mungkin menghasilkan berbilang kejadian. Dalam artikel ini, kami akan meneroka cara mencipta aplikasi Java contoh tunggal menggunakan kaedah terbukti yang diterangkan di bawah.

Pendekatan Java

Tidak seperti C# di mana kelas Mutex mengendalikan perkara ini kefungsian, Java menggunakan pendekatan yang berbeza:

  1. Buat Kunci Fail: Cipta fail unik untuk menunjukkan aplikasi sedang berjalan, menghalang berbilang kejadian.
  2. Peroleh Kunci Fail: Dapatkan kunci pada fail kunci menggunakan RandomAccessFile.getChannel(). tryLock(). Ini memastikan hanya satu aplikasi mempunyai akses tulis kepada fail.
  3. Daftar Cangkuk Tutup: Daftar cangkuk tutup untuk melepaskan kunci secara automatik dan memadam fail kunci apabila aplikasi keluar.
  4. Panggil lockInstance(): Guna kaedah lockInstance() dalam kaedah utama untuk menguatkuasakan single kefungsian contoh.
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;
}

Atas ialah kandungan terperinci Bagaimana untuk Memastikan Hanya Satu Contoh Aplikasi Java Berjalan pada Satu Masa?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn