
동기화란? 해당 메서드나 블록을 한번에 한 스레드씩 수행하도록 보장 동기화의 기능 동기화는 일관성이 깨진 상태를 볼 수 없게 하는 것은 물론, 동기화된 메서드나 블록에 들어간 스레드가 같은 락의 보호하에 수행된 모든 이전 수정의 최종 결과를 보게 해준다 동기화가 없다면 한 스레드가 저장한 값이 다른 스레드에게 언제 '보일지' 알 수 없다. 동기화는 배타적 실행 뿐 아니라 스레드 사이의 안정적인 통신에 꼭 필요하다. 잘못된 코드 public class StopThread { private static boolean stopRequested; public static void main(String[] args) { Thread backgroundThread = new Thread(() -> {..

버그나 보안 문제를 줄이기 위해 직렬화 프록시 패턴이 있다 직렬화 프록시 패턴 바깥 클래스의 논리적 상태를 정밀하게 표현하는 중첩 클래스를 설계해 private static으로 선언한다. 이 중첩 클래스가 바깥 클래스의 직렬화 프록시다. 중첩 클래스의 생성자는 단 하나여야 하며, 바깥 클래스를 매개변수로 받아야 한다. 생성자는 유효성 검사 및 방어적 복사 없이 단순히 인스턴스의 데이터를 복사한다. 바깥 클래스와 직렬화 프록시 모두 Serializable을 구현한다. private static class SerializationProxy implements Serializable { private final Date start; private final Date end; SerializationProxy(..

싱글턴과 직렬화 public class Elvis { public static final Elvis INSTANCE = new Elvis(); private Elvis() { ... } public void leaveTheBuild丄ng() { ... } } Serializable 을 추가하는 순간 더 이상 싱글턴이 아니게 된다 어떤 readObject()를 사용하든 이 클래스가 초기화될 때 만들어진 인스턴스와는 별개인 인스턴스를 반환한다. readResolve()를 사용하면 readObject()가 만들어낸 인스턴스를 다른 것으로 대체할 수 있다. 역직렬화된 새 인스턴스는 참조를 잃어 자동적으로 GC 대상이 된다. private Object readResolve() { return INSTANCE; }..
- Today
- Yesterday
- Concurrecy
- exception
- gslb
- Serialize
- 영속성
- Java
- nosql
- iterable
- Redis
- concurrency
- reactive
- observable
- 메인보드#asrock b650m #조립pc #후기이벤트
- jvm
- reactive stream
- Observer Pattern
- JMeter
- jdk11
- template method
- Design Pattern
- strategy
- in-memory
- Effective JAVA
- LAMBDA
- template
- 디자인패턴
- Serializable
- Spring
- 부하테스트
- object
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |