2011-04-05 4 views
3

신청서에 어딘가에 Executor executor;이 있다고 가정 해 보겠습니다. 평소와 같이 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);라고 말하고 "시스템"을 처리하는 것으로 충분합니까? 아니면 응용 프로그램을 종료하기 전에 수신기를 등록하고 executor.shutdown();을 수동으로 호출해야합니까?응용 프로그램 종료시 Executor를 수동으로 종료해야합니까?

+0

귀하의 집행자가 JFrame을 생성 했습니까? 아니면 JFrame에서 작성된 집행자입니까? 첫 번째 사실이라면 아마도 shutdown을 호출해야합니다. 그렇지 않으면 JVM이 처리해야합니다 ... – tjameson

+1

[This (http://stackoverflow.com/questions/1211657/how-to-shut-down-all) -executors-when-quitting-an-application) 및 [this] (http://stackoverflow.com/questions/3332832/graceful-shutdown-of-threads-and-executor)가 유용 할 수 있습니다. – mre

답변

2

이 응용 프로그램이 독립 실행 형이며 실행중인 스레드가 종료되는 것을 신경 쓰지 않는다면 걱정할 필요가 없습니다.

다른 클래스 (예 : Tomcat과 같은 서블릿 컨테이너)를 실행중인 VM에서 클래스가 실행중인 경우 Executor를 명시 적으로 종료해야하거나 스레드가 계속 실행될 수 있습니다 (Tomcat이 소리를 지르고 죽일 수없는 스레드와 메모리 누수가 있음을 나타냅니다.

0

응용 프로그램에 따라 Executor를 만들 때 데몬 스레드를 만드는 ThreadFactory를 전달합니다. 이것들은 응용 프로그램 종료를 막지는 못하지만 임의로 종료됩니다.