2011-10-16 5 views
0

저는 네이티브 라이브러리를로드해야하는이 응용 프로그램을 개발 중입니다. 네이티브 라이브러리의 로딩을 시작하는 클래스의 로딩은 주 스레드와 다른 스레드에서 실행됩니다. 오류가 발생하면 (오류 발생) VM이 종료 될 것으로 예상되지만이 경우에는 발생하지 않습니다. 확실히 네이티브 라이브러리를로드 할 수 없을 때 계속 진행해서는 안됩니다. 왜냐하면 응용 프로그램의 핵심이기 때문입니다. 주 스레드가 적어도 3 개의 스레드를 시작하기 때문에 내 응용 프로그램이 종료되지 않는다고 가정합니다. 가젯이 연결되어 있는지 여부를 청취 한 후 연결 또는 연결 해제되었음을 리스너에 알리는 연결 스레드 및 기타 자원 관리 스레드.오류시 JVM 종료

jls에서 응용 프로그램이 오류를 잡아서는 안된다는 메시지가 나타나면 어떻게합니까?

답변

1

질문에 올바르게 대답하기 위해, 내가 스폰 한 다른 스레드에 대한 자세한 정보가 필요합니다. 데몬 유형 스레드로 설정할 수 있습니까? 그렇지 않다면 정상적으로 정상적으로 스레드를 종료합니까?

여기에 무차별 대입 (네이티브 라이브러리를로드 스레드 내부) 방법 :

try { 
    methodToLoadLibrary(); 
    doWhatYouNeedToDo(); 
} finally { 
    System.exit(1); 
} 

하지만이 스레드가 종료 될 때 전체 프로세스를 종료 할 수 있습니다 것으로 가정합니다. 당신이 스레드가 정상적으로 종료하기 위해 호출 할 수있는 방법이있는 경우

, 당신이 함께 System.exit(1); 전화를 대체 할 수 Stoppable는 당신이 정상 종료를 원하는 통신을위한 인터페이스입니다

Collection<Stoppable> sList; 
for(Stoppable s : sList) { 
    s.stop(); 
} 

을 그 스레드.

Thread.stop을 다른 스레드에서 호출하는 것과 같이 덜 깨끗한 방법도 있습니다.