Java(2)
-
[Java] 동기/비동기, 블로킹/논블로킹 구현해보기
이번 포스팅에서 Synchronous(동기)와 Asynchronous(비동기), Blocking과 NonBlocking의 개념과 구현에 대해 알아보겠습니다. 먼저 쉽게 비유를 들자면, 다음과 같이 들 수 있습니다.기다림 Blocking / 기다리지 않음 Non-blocking내가 함 Synchronous / 다른 사람 시킴 Asynchronous저는 사무실에 있습니다. 복합기를 사용해서 스캔을 뜨고 싶습니다.그런데 문서의 양이 많아서 시간이 좀 오래 걸립니다. 10분 이상 걸립니다.복합기의 시작 버튼을 눌렀습니다. 그리고 그 앞에서 스캔이 완료될때까지지 하염없이 기다렸다가 결과물 스캔 된 파일)을 갖게 된다면,이것은 blocking 입니다. 10분은 아무것도 안 하기에는 꽤 긴 시간인데 말이죠. bloc..
2025.09.01 -
[Java] Mutable 코드 개선하기
이번 포스팅에서는 왜 Mutable 코드 작성을 지양해야 하는지에 대해 알아보고 개선하는 과정을 소개하겠습니다. Mutable 코드란?"Mutable = 변할 수 있는" 이란 뜻을 가지고 있는 영어 단어입니다.따라서 Mutable 코드란, 객체나 데이터의 상태가 생성 이후에도 자유롭게 변경될 수 있는 코드를 의미합니다. 즉, 한 번 만들어진 객체나 자료구조의 내부 값이나 속성을 언제든 바꿀 수 있는 구조입니다.Mutable 객체(가변 객체)를 사용할 때 Immutable(= 가변적이지 않은)하도록 코드를 작성하지 않으면 Mutble 코드가 될 수 있습니다. 가변 객체란?자바의 참조타입엔 클래스(Class), 인터페이스(Interface), 배열(Array), 열거형(Enum)이 있습니다.아래 사진처럼 참..
2025.04.30