자원정리 이후 메인 스레드 종료
120
작성한 질문수 25
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문 전에 다음을 꼭 확인해주세요.
1. 강의 내용과 관련된 질문을 남겨주세요.
2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.
(자주 하는 질문 링크: https://bit.ly/3fX6ygx)
3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.
(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)
질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.
=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)
[질문 내용]
자원 정리 V6까지 완료했을때 클라이언트를 먼저 종료하면 서버 콘솔에 정상 종료됐다고 로그는 찍히는데 while문이 종료가 안되서 그런지 자바 스레드 자체는 종료가 안되던데 그냥 자원정리만 자동으로 하게 만들고 자바 종료 같은경우엔 직접하는건가요?
답변 2
0
안녕하세요. eovnfjfpa님
클라이언트를 모두 종료하더라도 서버는 살아있어야 합니다. 이후에 다른 클라이언트가 접속할 수 있어야 하기 때문이지요.
따라서 서버의 경우 종료가 필요한 시점에, 서버를 별도로 종료하는 방법이 필요합니다.
관련해서 AI 인턴의 답변을 참고해주세요 🙂
감사합니다.
0
안녕하세요, 인프런 AI 인턴입니다. eovnfjfpa님.
자원 정리 시 발생하는 스레드 종료 문제에 대해 궁금해하시네요. 일반적으로 자바에서는 리소스(예를 들어 네트워크 소켓, 파일 등)를 정리한 후에도 프로그램이 완전히 종료되지 않는 경우는 대개 스레드가 여전히 실행 중이기 때문입니다. 이러한 상황에서는 while 문이나 다른 루프가 종료되지 않아 스레드가 계속 실행되고 있을 수 있습니다.
리소스 정리 후 종료되지 않는 이유:
- 자원 정리는 보통 리소스를 해제하는 작업을 포함하지만, 메인 스레드나 다른 비-데몬(non-daemon) 스레드가 살아있는 한 JVM은 종료되지 않습니다. 즉, 리소스를 닫고 해제하는 것과 프로그램 자체를 종료하는 것은 별개의 작업입니다.
- 자원 정리는 보통 리소스를 해제하는 작업을 포함하지만, 메인 스레드나 다른 비-데몬(non-daemon) 스레드가 살아있는 한 JVM은 종료되지 않습니다. 즉, 리소스를 닫고 해제하는 것과 프로그램 자체를 종료하는 것은 별개의 작업입니다.
프로그램 종료 방법:
- 만약 자원이 해제된 후 프로그램이 종료되기를 원하신다면,
System.exit(0);같은 명령을 사용해 수동으로 프로그램을 종료할 수 있습니다. 이는 프로그램을 즉시 종료시키므로, 실행 중인 모든 스레드를 중지시킵니다.
- 만약 자원이 해제된 후 프로그램이 종료되기를 원하신다면,
하지만 수동으로 종료하지 않더라도, 모든 비-데몬 스레드가 종료되면 JVM은 자동으로 프로그램을 종료합니다. 만약 while 문이나 다른 로직이 스레드를 계속 유지하고 있다면, 해당 로직이 정상적으로 종료되는지 확인하는 것이 중요합니다.
추가적인 도움이 필요하시다면 아래의 관련 게시물을 참고해 보세요:
- 우아하게 프로그램 종료하기
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
RequestHandler 버전 간 process() 파라미터 차이 질문
0
73
2
리플렉션 default
0
52
1
그럼 SOURCE나 CLASS는 어떤 경우에 사용하나요?
0
77
2
네트워크 프로그램 자원종료 Socket 정리 시 closed 사용 문의
0
100
2
FileInputStream의 transferTo 사용 시 Buffer 문의
0
64
1
오타 제보 드립니다
0
74
2
강좌 복습 팁이 있으신 분들 공유해주시면 감사하겠습니다.
0
106
1
16강 질문있습니다.
0
49
1
한글이 깨질 떄 어떻게 해야 하나요?
0
78
1
자원 정리시 에러가 발생 했을 때 메모리 상황 및 실무에서 로그 확인 방법
0
91
1
인텔리제이에서 네모(스탑버튼) 누르는 것의 의미
-1
67
1
강의 섹션 8: 네드워크 -프로그램 3부분 10:45 오타?
0
87
2
제대로 이해한게 맞나 궁금합니다
0
78
1
File,Files 강의 2번쨰 Files 07:30 에 tmep 파일들을 다 지운건가요 ?
0
63
1
/.well-known/appspecific/com.chrome.devtools.json 에러에 대해서
0
619
1
Socket 자원을 정리할때 stream 을 정리하지 않는 이유가 궁금합니다.
0
89
1
클라이언트 강제종료시 오류 메세지
0
106
2
고급 2편에는 퀴즈가 없네요?
0
98
1
55. 네트워크 프로그램5 - 자원정리2 질문
0
67
1
클라이언트가 FIN과 함께 보내는 ACK는 무엇에 대한건가요?
1
105
2
BufferedInputStream이 1바이트씩 조회해도 성능이 좋은 이유
0
79
1
오타제보
0
63
2
문자 집합 호환성 여부를 판단할 때
0
52
1
utf-8, char
0
53
1





