찾다

 >  Q&A  >  본문

java - 하위 스레드가 끝나지 않고 기본 스레드가 종료됩니다.

오늘 프로그램을 실행할 때 버그가 발생했습니다. 즉, 메인 함수에 의해 실행된 하위 스레드 작업이 완료되기 전에 시작되었습니다. 그러나 메인 프로그램에 sleep()을 추가하면 하위 스레드가 정상적으로 실행되어 시작됩니다(단, 절전 시간이 너무 짧으면 작동하지 않습니다). 디버그 하위 스레드는 주로 데이터베이스 작업을 수행하는 코드 줄에 걸려 있습니다(아마도 시간이 더 많이 걸리고 메인 스레드가 완료될 때까지 기다릴 시간이 없기 때문일 수 있습니다...).


typechotypecho2718일 전1102

모든 응답(2)나는 대답할 것이다

  • 高洛峰

    高洛峰2017-06-12 09:23:01

    하위 스레드가 설정되어 있는지 확인하세요. setDaemon(true) Jvm은 다음 상황에서 종료됩니다.

    1. 실행 중인 모든 스레드가 데몬 스레드인 경우

    2. 또는 데몬이 아닌 스레드가 실행되고 있지 않은 경우

    회신하다
    0
  • 巴扎黑

    巴扎黑2017-06-12 09:23:01

    스레드 사이에는 부모-자식 관계가 없습니다. 기다려야 한다면 join() 방법을 고려해 보세요. 참조:
    /a/11...

    회신하다
    0
  • 취소회신하다