장점

    [Effective Java] 변경 가능성을 최소화하라

    불변 클래스 불변 클래스란 간단히 말해 그 인스턴스의 내부 값을 수정할 수 없는 클래스다. 불변 클래스는 가변 클래스보다 설계하고 구현하고 사용하기 쉬우며, 오류가 생길 여지도 적고 훨씬 안전하다. 불변 클래스를 만드는 규칙 객체의 상태를 변경하는 메서드를 제공하지 않는다. 클래스를 확장할 수 없도록 한다. => 상속을 막는 대표적인 방법은 클래스를 final로 선언하는 것이다. => 생성자를 모두 private으로 만들고 정적 팩터리를 제공하는 방법도 있다. => 다음 코드에서는 PhoneNumber를 상속하고 name필드를 바꿀 수 있는 변경 메서드를 정의함으로써 불변이 아닌 경우의 수를 제공하게 된다. // 불변 클래스를 의도하고 만들었다고 가정하자. public class PhoneNumber {..

    [운영체제] 스레드

    [운영체제] 스레드

    스레드는 CPU이용의 기본 단위이다. 스레드는 스레드 ID, 프로그램 카운터(PC), 레지스터 집합, 스택으로 구성된다. 스레드에는 단일 스레드와 다중 스레드가 있는데 만일 프로세스가 다수의 제어 스레드를 가진다면 프로세스는 동시에 하나 이상의 작업을 수행할 수 있다. 하나의 응용 프로그램이 여러 개의 비슷한 작업을 수행할 필요가 있는 상황들이 꽤 많다. 예를 들어, 웹 서버는 클라이언트로부터 웹 페이지나 이미지 등에 대한 요청을 받는다. 만약 웹 서버가 단일 스레드 프로세스로 작동한다면, 한 번에 하나의 클라이언트만 서비스할 수 있게 되어 클라이언트는 자신의 요구가 서비스되기까지 매우 긴 시간을 기다려야 한다. 이에 대한 해결책으로 사용했던 방법이 서버에게 서비스 요청이 들어오면 프로세스는 그 요청을 ..