Computer >> 컴퓨터 >  >> 프로그래밍 >> Java

Java 9에서 개선된 Process API의 주요 기능과 활용 방법

Java 9 Process API의 개선 사항

자바(Java)는 9 버전에서 Process API를 크게 개선하여 운영체제(OS) 프로세스를 더욱 효율적으로 관리하고 제어할 수 있도록 지원합니다. 이전 버전에서는 순수 자바 코드만으로 운영체제 프로세스를 다루기가 상당히 까다로웠지만, 자바 9부터는 이러한 작업을 수행할 수 있는 새로운 클래스와 인터페이스가 추가되었습니다.

ProcessHandle 인터페이스는 네이티브(native) 프로세스를 식별하고 제어 권한을 제공하며, 프로세스의 생존 여부(liveness)를 확인하거나 프로세스를 강제 종료하는 메서드도 포함하고 있습니다. 아울러 ProcessHandle.Info 인터페이스를 사용하면 특정 프로세스에 대한 정보 스냅샷(snapshot)을 손쉽게 조회할 수 있습니다.

개선된 Process API가 제공하는 주요 정보는 다음과 같습니다.

  • 프로세스의 네이티브 프로세스 ID(PID)
  • 누적 CPU 사용 시간
  • 부모 프로세스 정보
  • 프로세스를 종료하는 메서드
  • 해당 프로세스의 자식(후손) 프로세스 목록 등

예제 코드

public class ProcessTest {
    public static void main(String args[]) {
        ProcessHandle currentProcess = ProcessHandle.current();
        System.out.println("PID: " + currentProcess.pid());
        ProcessHandle.Info currentProcessInfo = currentProcess.info();
        System.out.println("totalCpuDuration: " + currentProcessInfo.totalCpuDuration());
        System.out.println("user: " + currentProcessInfo.user());
    }
}

위 예제에서는 ProcessHandle.current() 메서드로 현재 실행 중인 프로세스의 핸들을 가져온 뒤, pid()로 프로세스 ID를 출력하고 info() 메서드를 통해 CPU 누적 사용 시간과 실행 사용자 정보를 확인합니다.

실행 결과

PID: 6004
totalCpuDuration: Optional[PT0.421875S]
user: Optional[Tutorialspoint\User]

출력 결과에서 볼 수 있듯이 totalCpuDuration과 user 값은 Optional 타입으로 반환됩니다. 이는 운영체제나 실행 환경에 따라 해당 정보를 얻지 못할 수도 있음을 의미하며, Optional을 활용하면 값이 없는 경우에도 안전하게 처리할 수 있습니다.