2012-09-01 2 views
1

Eclipse 3.7.2는 Solaris 11 X86에서 도청되었습니다 - 주 스레드는 임의로 절전 상태가되어 절대로 깨어나지 않습니다. 주 스레드가 계속 실행되도록 절전 모드를 중단하고 싶습니다. 가능한가? 여기실행중인 JVM에서 응용 프로그램의 코드에 액세스하지 않고 절전 모드 스레드를 인터럽트 할 수 있습니까?

자세한 내용 : Eclipse hangs forever, thread dump says main thread is sleeping

답변

3

나는 당신이 작성하지 않은 코드를 실행하는 스레드를 중단 할 수있는 좋은 아이디어라고 생각하지 않는다 - 당신이 가능 등 교착 상태, 손상된 데이터 구조, 또는 발생할 수 그것은 아마도 양성 일 수 있습니다. 그러나 그것은 당신의 위험입니다 ...

예, 원하는 것을 할 수 있습니다. 특정 응용 프로그램 내에서 자신의 코드가 실행되면 특정 이름을 가진 스레드가 오랫동안 잠자기 상태가 될 때까지 스레드를 모니터링하고 다음과 같이 쉽게 인터럽트 할 수 있습니다.

Thread.enumerate() 
Thread.getName() 
Thread.interrupt() 

나머지 프로그램과 동시에 코드를 실행하려면 시작 관리자를 수정하면됩니다. 클래스 경로 수정, 자체 모니터링 스레드를 시작하는 main 메서드로 클래스 만들기 및 실제 주 메서드 호출 .

또는 Java 에이전트로 모니터링 스레드를 작성하고 "-javaagent"스위치를 사용할 수 있습니다. 자세한 내용은 http://docs.oracle.com/javase/7/docs/api/java/lang/instrument/package-summary.html을 참조하십시오.

0

Eclipse의 경우 >> < <이 코드에 액세스 할 수 있습니다. Eclipse는 오픈 소스이기 때문에.

코드를 다운로드하고 수정 (예 : 워치 독을 구현) 한 다음 다시 작성하는 것이 좋습니다.

아마도이 문제는 Eclipse 버그로보고해야합니다.

관련 문제