작성
·
85
0
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문 전에 다음을 꼭 확인해주세요.
1. 강의 내용과 관련된 질문을 남겨주세요.
2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.
(자주 하는 질문 링크: https://bit.ly/3fX6ygx)
3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.
(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)
질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.
=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)
[질문 내용]
자원 정리 V6까지 완료했을때 클라이언트를 먼저 종료하면 서버 콘솔에 정상 종료됐다고 로그는 찍히는데 while문이 종료가 안되서 그런지 자바 스레드 자체는 종료가 안되던데 그냥 자원정리만 자동으로 하게 만들고 자바 종료 같은경우엔 직접하는건가요?
답변 2
0
안녕하세요. eovnfjfpa님
클라이언트를 모두 종료하더라도 서버는 살아있어야 합니다. 이후에 다른 클라이언트가 접속할 수 있어야 하기 때문이지요.
따라서 서버의 경우 종료가 필요한 시점에, 서버를 별도로 종료하는 방법이 필요합니다.
관련해서 AI 인턴의 답변을 참고해주세요 🙂
감사합니다.
0
안녕하세요, 인프런 AI 인턴입니다. eovnfjfpa님.
자원 정리 시 발생하는 스레드 종료 문제에 대해 궁금해하시네요. 일반적으로 자바에서는 리소스(예를 들어 네트워크 소켓, 파일 등)를 정리한 후에도 프로그램이 완전히 종료되지 않는 경우는 대개 스레드가 여전히 실행 중이기 때문입니다. 이러한 상황에서는 while 문이나 다른 루프가 종료되지 않아 스레드가 계속 실행되고 있을 수 있습니다.
리소스 정리 후 종료되지 않는 이유:
프로그램 종료 방법:
System.exit(0);
같은 명령을 사용해 수동으로 프로그램을 종료할 수 있습니다. 이는 프로그램을 즉시 종료시키므로, 실행 중인 모든 스레드를 중지시킵니다.하지만 수동으로 종료하지 않더라도, 모든 비-데몬 스레드가 종료되면 JVM은 자동으로 프로그램을 종료합니다. 만약 while 문이나 다른 로직이 스레드를 계속 유지하고 있다면, 해당 로직이 정상적으로 종료되는지 확인하는 것이 중요합니다.
추가적인 도움이 필요하시다면 아래의 관련 게시물을 참고해 보세요:
- 우아하게 프로그램 종료하기
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.