> Java > java지도 시간 > 한 번에 하나의 Java 애플리케이션 인스턴스만 실행되도록 하려면 어떻게 해야 합니까?

한 번에 하나의 Java 애플리케이션 인스턴스만 실행되도록 하려면 어떻게 해야 합니까?

Susan Sarandon
풀어 주다: 2024-12-16 01:28:16
원래의
679명이 탐색했습니다.

How Can I Ensure Only One Instance of My Java Application Runs at a Time?

단일 인스턴스 Java 애플리케이션 생성

단일 인스턴스 애플리케이션은 한 번에 하나의 프로그램 인스턴스만 실행되도록 하여 여러 동시 실행을 방지합니다. C#에서는 Mutex 클래스가 이러한 목적으로 사용됩니다. 그러나 Java에서 이러한 동작을 구현하려면 다른 접근 방식이 필요합니다.

Java 구현

Java에서 단일 인스턴스 애플리케이션을 생성하려면 파일 잠금 메커니즘을 활용하는 일반적인 솔루션이 필요합니다. . 한 가지 효과적인 방법은 프로그램 시작 시 임시 파일을 만들고 해당 파일에 대한 잠금을 얻으려고 시도하는 것입니다. 잠금이 성공적으로 획득되면 애플리케이션이 실행 중인 첫 번째 인스턴스임을 나타냅니다.

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) {
                        // Handle exception appropriately
                    }
                }
            });
            return true;
        }
    } catch (Exception e) {
        // Handle exception appropriately
    }
    return false;
}
로그인 후 복사

Usage

이 메서드는 다음의 기본 메서드에서 호출될 수 있습니다. 단일 인스턴스가 이미 실행 중인지 확인하는 애플리케이션입니다. 잠금이 성공적으로 획득되면 애플리케이션은 실행을 계속할 수 있습니다. 잠금을 획득할 수 없는 경우 이는 다른 인스턴스가 이미 실행 중임을 나타내며 현재 인스턴스가 종료되어야 함을 나타냅니다.

이 파일 잠금 접근 방식을 사용하면 Java 애플리케이션은 원하는 단일 인스턴스 동작을 구현하여 하나의 인스턴스만 보장할 수 있습니다. 한 번에 실행됩니다.

위 내용은 한 번에 하나의 Java 애플리케이션 인스턴스만 실행되도록 하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿