Thread Java에서는 JDK 1.0부터 `Thread` 클래스를 제공해 멀티태스킹을 지원했습니다.(Thread) `Thread` 클래스를 통해 스레드를 생성할 수 있고 이 클래스를 상속받아 run() 메서드를 오버라이드하거나 `Runnable` 인터페이스를 구현해 `Thread` 클래스 생성자의 인자로 넘겨줌으로써 원하는 작업을 수행하는 스레드를 생성할 수 있습니다. 스레드의 상태는 다음과 같습니다. (Thread.State) New: 새로 생성된 스레드, 아직 시작되지 않음 Runnable: 실행 가능 혹은 실행 중인 상태 Blocked: 동기화에 의해 차단됨 Waiting: 다른 스레드가 특정 액션을 수행하길 기다림 Timed Waiting: 지정된 시간 동안 기다림 Terminated: 실행 ..
Languages/Java
이번 글에서는 macOS에서 JDK 버전 관리 방법을 다룹니다. nodejs에서는 `n` 혹은 `nvm`과 같은 버전을 관리 툴을 사용하면 손쉽게 새로운 버전을 확인, 설치할 수 있고 설치된 버전을 변경, 삭제할 수 있습니다. java에서는 설정할 것이 노드에 비해 더 많기 때문에 미래의 저와 다른 분들에게 도움이 되고자 블로그에 정리해 봅니다. 이 글은 설정 과정과 이유를 담고 있습니다. 빠르게 설정만 필요하신 분들은 글 아래의 `정리` 부분을 바로 읽으시면 시간을 아끼실 수 있습니다. Homebrew 설치 `Homebrew`는 macOS의 오픈소스 패키지 관리 시스템입니다. CLI기반 툴이라 처음 사용하시면 어색할 수 있지만 JDK 버전 관리 글을 읽고 있는 분이라면 익숙하실 거라 생각합니다. hom..
이번 글에서는 잘 사용하면 복잡한 연산을 쉽고 빠르게 처리할 수 있는 비트 연산과 시프트 연산을 알아보고 Java로 실습해 보겠습니다. 비트 연산 `비트 연산(bitwise operation)`은 이진수에 대해 비트 단위로 적용되는 연산입니다. 비트 연산자에는 논리 연산에서 사용되는 논리합(OR), 논리곱(AND), 배타적 논리곱(XOR), 부정(NOT)이 있습니다. 많은 프로그래밍 언어에서 `비트 연산자`로 &(AND), |(OR), ^(XOR), ~(NOT)을 사용합니다. `비트 연산의 진리표`는 논리 연산의 진리표에서 True와 False를 1과 0으로 바꾸면 됩니다. 진리표는 아래와 같습니다. AND(&) OR(|) XOR(^) NOT(~) 1 & 1 1 1 | 1 1 1 ^ 1 0 ~1 0 1 ..