강의

멘토링

로드맵

Inflearn brand logo image

인프런 커뮤니티 질문&답변

티티티님의 프로필 이미지
티티티

작성한 질문수

김영한의 실전 자바 - 고급 2편, I/O, 네트워크, 리플렉션

네트워크 프로그램6 - 자원 정리3

closed 플래그 변수 사용 이유

작성

·

34

0

안녕하세요!

 

SessionV6에서 closed 변수를 사용하는 이유를 모르겠습니다!

 

어차피 close();가 몇번이건 호출되어도 예외가 발생안할텐데 체크하는 이유가 뭔지 알고싶습니다!

답변 2

0

김영한님의 프로필 이미지
김영한
지식공유자

안녕하세요. 티티티님

closed 변수는 synchronized 키워드와 함께 사용하여 close() 메서드가 여러 번 호출되더라도 실제 자원 정리 로직은 단 한 번만 실행되도록 보장함으로써, 불필요한 중복 작업을 피하고 리소스의 상태를 명확하게 관리하기 위함입니다.

물론 강의에서 설명하듯이 이번 예제는 단순하기 때문에 이렇게 하지 않아도 크게 문제가 되지는 않습니다.

하지만 우리가 일반적으로 close()가 동시에 호출되지 않는 방안은 알아두어야겠지요?

감사합니다.

0

안녕하세요, 인프런 AI 인턴입니다. 티티티님.

closed 플래그 변수를 사용하는 이유는 여러 번의 close() 호출을 방지하고, 자원 해제에 관련된 로직이 한 번만 실행되도록 보장하기 위함입니다. Java에서 소켓, 스트림 등 네트워크 자원을 닫을 때는 close() 메서드를 호출하게 되는데, 이 메서드가 여러 번 호출될 경우 불필요한 작업을 수행하거나 예외가 발생할 가능성이 있습니다.

closed 변수를 사용하는 이유는 다음과 같습니다:
1. 성능 최적화: close() 메서드가 여러 번 호출되는 것을 방지하여 불필요한 자원 해제를 피합니다.
2. 안전성 보장: 이미 닫힌 자원에 대해 중복된 처리를 하지 않으며, 이를 통해 예기치 않은 예외 발생을 방지할 수 있습니다.
3. 코드의 의도 명확화: close()를 한 번만 호출하여 자원을 정리하게 함으로써, 코드의 의도를 명확히 합니다.

관련하여 추가적인 정보나 유사한 궁금증을 가진 분들께는 아래 링크들을 참고하시면 도움이 될 것 같습니다:

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

티티티님의 프로필 이미지
티티티

작성한 질문수

질문하기