Java 9의 새로운 기능은 작성한 프로세스 (강제로 SIGKILL
의 의미로)를 강제로 종료 할 수는 없지만 SIGTERM
(Java에서는 "정상 종료"라고 함)을 보내도록 지원할 수도 있다는 것입니다.모든 VM 지원 Process.supportsNormalTermination == true?
구현이 지원하면 조회 할 수 있습니다 Process 하나의 문서에 따르면 : (파괴의 구현) 일반적으로 프로세스를 종료하는 경우
나는 오라클 JRE 9.0.1 (윈도우 64 비트)를 사용하여 몇 가지 테스트를했다.공공 부울 supportsNormalTermination 것은()가 true를 돌려 반환 강제적으로 destroy의 구현 및 가 즉시 프로세스를 종료하면 false입니다. Process플랫폼 구현에 따라 ProcessBuilder.start() 및 Runtime.exec (java.lang.String)에서 반환 한 객체 에서이 메서드를 호출하면 true 또는 false를 반환합니다.
Process p = Runtime.getRuntime().exec("javaw -cp target/classes TestClassWait10Minutes"); p.waitFor(5, TimeUnit.SECONDS); System.out.println(p.supportsNormalTermination());
그러나 내가 항상
false
을 얻을 오라클 JRE는 "정상 종료"를 지원하지 않는 것 같습니다 :
"플랫폼 구현"에 따라 Java 9가 정의하지만 구현하지는 않습니다.
"정상 종료"기능이 사용 가능한 Java VM에서 전혀 사용할 수 있는지 여부를 아는 사람이 있습니까?
프로세스를 종료하지 않고 5 초 동안 재치 있습니다. Java 프로그램 "TestClass"는 10 분 동 안 실행됩니다. – JMax