스레드 스케줄러 여러 스레드가 실행중이면 운영체제의 스레드 스케줄러가 어떤 스레드를 얼마나 오래 실행할지 정한다. 스레드 스케줄링 정책은 OS다를 수 있기 때문에, 프로그램은 이 정책에 좌지우지 되어서는 안된다. 특징 이식성 좋은 프로그램은 실행 가능한 스레드의 평균적인 수를 프로세서 수보다 지나치게 많아지지 않도록 하는 것이다. 스레드 스케줄러가 고민할 거리가 줄어든다. 실행 가능한 스레드의 수는 전체 스레드 수와 다르다. 실행 준비가 된 스레드들은 맡은 작업을 완료할 때까지 계속 실행되도록 만든다. 실행 가능한 스레드 수를 적게 유지하는 방법은 각 스레드가 작업을 완료한 후 다음 일거리가 생길 때까지 대기하도록 하는 것이다. 당장 처리해야 할 작업이 없다면 실행돼서는 안 된다. 스레드 풀을 적절히 설..
지연초기화 필드의 초기화 시점을 그 값이 처음 필요할때까지 늦추는 기법이다 그래서 값이 전혀 쓰이지 않으면 초기화도 일어나지 않는다 대부분의 상황에서 일반적인 초기화가 지연 초기화보다 낫다 지연 초기화가 초기화 순환성(initialization circularity)을 깨뜨릴 것 같으면 synchronized를 단 접근자를 사용 private FieldType field; private synchronized FieldType getFieldO { if (field = null) field = computeFieldValue〇; return field; } 성능 때문에 정적 필드를 지연 초기화해야 한다면 지연 초기화 홀더 클래스 (lazy initialization holder class) 관용구를 사용..
스레드 안전성 멀티스레드 환경에서도 API를 안전하게 사용하게 하려면 클래스가 지원하는 스레드 안전성 수준을 정확히 명시해야 한다 스레드 안정성 높은 순 불변(immutable): 이 클래스의 인스턴스는 마치 상수와 같아서 외부 동기화도 필요 없다.String,Long,Biglnteger 무조건적 스레드 안전(unconditionally thread-safe):이 클래스의 인스턴스 는 수정될 수 있으나,내부에서 충실히 동기화하여 별도의 외부 동기화 없이 동시에 사용해도 안전하다. AtomicLong, ConcurrentHashMap이 여기에 속한다. 조건부 스레드 안전(conditionally thread-safe):무조건적 스레드 안전과 같으나,일부 메서드는 동시에 사용하려면 외부 동기화가 필요하다. ..
- Today
- Yesterday
- gslb
- Design Pattern
- 영속성
- JMeter
- 부하테스트
- exception
- Java
- in-memory
- object
- LAMBDA
- observable
- template method
- reactive stream
- reactive
- jdk11
- Redis
- concurrency
- template
- Observer Pattern
- 메인보드#asrock b650m #조립pc #후기이벤트
- Serializable
- strategy
- Concurrecy
- 디자인패턴
- jvm
- Spring
- Effective JAVA
- iterable
- Serialize
- nosql
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |