일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Container
- load balancer
- 도커
- create-drop
- 로드밸런서
- ArrayList 소스코드
- ArrayList 길이 확장
- heap
- JPA 장점
- docker
- github
- 컨테이너
- 멀티스레드 싱글톤
- transaction
- JPA
- 스키마 자동 생성
- 권장 PK 전략
- PostgreSQL
- ArrayList 가변
- index
- 자바 동시성
- JPA란
- acid
- 데이터베이스
- java
- postgres
- thread safety
- 트랜잭션
- Database
- 싱글톤 동시성
- Today
- Total
목록Java (5)
JS

일반적으로 단일 스레드 환경에서 Singleton Pattern을 사용할 때는 큰 문제가 없습니다. 하지만 멀티스레드 환경에서는 다중 스레드를 이용한다는 부분에서 생길 수 있는 문제점들이 있으며, 이를 해결할 수 있는 방법에는 여러 가지가 있습니다. 지금부터 싱글톤 패턴이 무엇인지와 멀티스레드 환경에서 싱글톤 패턴 사용 시 thread safety를 보장할 수 있는 여러가지 기법들에 대해 소개합니다. Singleton Pattern 이란? GoF Design Patterns 중 하나로 같은 생성자가 여러번 호출되더라도 최초 생성자 호출 시 생성되는 하나의 동일한 인스턴스가 반복적으로 반환되는 패턴입니다. 사용할 클래스의 인스턴스가 최초 한번 메모리에 할당된 뒤 매번 똑같은 역할을 하는 인스턴스를 여러개 ..

Java의 동시성 시리즈의 첫 번째 주제로 Thread 생성 및 시작 방법과 sleep, interrupt, join에 대해 알아보겠습니다. Thread 생성 방법과 사용 Java에서 thread를 생성하는 방법은 여러 가지가 있습니다. Thread 클래스를 상속한 서브클래스를 생성해서 run() 메소드를 오버라이드 하는 방법 Anonymous Thread 클래스를 생성해서 run() 메소드를 오버라이드 하는 방법 (딱 한 번만 실행하고 싶은 경우 좋다.) Runnable 인터페이스를 구현하는 방법 1. Thread 클래스를 상속한 서브클래스를 생성해서 run() 메소드를 오버라이드 하는 방법 // Main.java public class Main { public static void main(Strin..

Java로 개발하면서 배열을 사용해야 하는 경우 Collection 프레임워크의 ArrayList 클래스를 사용할 일이 굉장히 많습니다. 배열은 고정 길이 데이터 구조라서 최초에 할당해놓은 길이를 넘어가면 직접 더 큰 크기의 새로운 배열을 만들어줘야 하는 불편함이 있는 반면, ArrayList는 새로운 데이터를 추가할 때 내부적으로 길이를 가변적으로 관리해주기 때문에 더 편리하게 사용할 수 있기 때문이죠. 그렇다면 실제로 내부에서 어떤식으로 ArrayList의 길이를 가변적으로 관리할까요? 이런 ArrayList 클래스도 개발자들이 작성한 코드이고, JDK 버전이 업되면서 기존 구현 코드의 문제점을 보완하거나 더 효율이 좋게끔 업데이트합니다. 그래서 JDK 6,7,8 버전 간 ArrayList 구현 방식..

객체의 불변성(Immutability)이란? 객체가 immutable 하다는 것은 객체가 최초 생성된 시점 이후 상태 값이 변하지 않는다는 뜻입니다. 객체를 처음 만들었을 때의 속성을 해당 객체가 사라질 때까지 그대로 유지한다는 뜻이죠. 객체의 불변성이 왜 중요할까? 어떤 장단점이 있을까? 그렇다면 객체의 불변성이 왜 중요할까요? 이펙티브 자바(Effective Java)에서는 특별한 이유가 있지 않은 이상 클래스는 immutable 해야 한다고 합니다. Classes should be immutable unless there's a very good reason to make them mutable....If a class cannot be made immutable, limit its mutabili..

Java Virtual Machine(JVM) 구조는 크게 Class Loader, Runtime Data Area, Execution 이렇게 세 가지로 나눌 수 있는데, 여기서는 메모리 영역인 Runtime Data Area에 대한 내용을 다룹니다. Runtime Data Area Runtime Data Area란, JVM이 프로그램을 수행하기 위해 OS로부터 할당받은 메모리 영역입니다. 이 메모리 공간은 5가지 영역으로 쪼개어져 있으며 크게 두 가지로 분류됩니다. JVM 시작시 생성되며 JVM 종료 시 소멸되는 영역들로는 Method Area와 Heap이 있으며, 모든 쓰레드 간 자원이 공유됩니다. 각 쓰레드가 생성될 때 생성되고 해당 쓰레드가 종료될 때 소멸되는 영역들에는 Stack, PC Regi..