2011-07-26 5 views

답변

4

Java에서 "정상적인"종료는 일반적으로 모든 비 데몬 스레드가 정상적으로 작업을 완료하도록함으로써 수행됩니다. 응용 프로그램에서 일부 포트에서 "종료"명령을 수신하는 경우 스크립트에서 해당 포트에 대한 명령을 트리거 할 수 있습니다.이 포트를 사용하면 스레드가 작동하지 않도록 적절한 플래그를 설정할 수 있으므로 JVM을 종료 할 수 있습니다 . 아마 내가 해본 가장 간단한 방법 일 것입니다.

3

.bat 스크립트는 VM 외부 프로세스입니다. 따라서 여러분은 여러분의 자바 애플리케이션에 어떤 종류의 IPC를 구현해야 할 것이다. 상대적으로 간단한 옵션은 RMI 또는 JMX를 사용하는 것입니다.

다른 가능성은 응용 프로그램에서 볼 수있는 파일을 사용하는 것이며 .bat 스크립트로 수정할 수 있으므로 다른 프로세스가 종료해야한다는 것을 인식합니다.

+1

Java 7 (아직 출시되지 않음)에는 파일 모니터링 API가 있으며, 지금은 opensource JNotify 라이브러리를 사용할 수 있습니다. – djna

5

Runtime 클래스의 addShutdownHook 메소드를 살펴보십시오.

Runtime.getRuntime().addShutdownHook(...); 

UPDATE : 아래의 코멘트 당으로, * 괜찬아 kill 명령과 유사합니다 Windows 셸의 명령에서 taskkill이 있습니다. 예를 들어 TASKKILL /IM java.exe은 모든 java 프로세스를 종료합니다. TASKLIST은 실행중인 모든 프로세스를 찾는 데 사용할 수 있습니다. 이것을 shutdownhook과 함께 사용하면 필요한 풍부한 기능을 제공해야합니다.

+0

그게 종료시 스레드를 호출하지만 종료 자체를 트리거하지는 않습니다. – weekens

관련 문제