Java 스레드7 - 스레드 풀과 Executor 프레임워크1
강의 : 김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성 12. 스레드 풀과 Executor 프레임워크1 12-1. 스레드를 직접 사용할 때의 문제점 스레드를 직접 생성해서 사용하면 다음과 같은 3가지 문제가 있다. 스레드 생성 시간으로 인한 성능 문제 스레드 관리 문제 Runnable 인터페이스의 불편함 12-1-1. 스...
강의 : 김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성 12. 스레드 풀과 Executor 프레임워크1 12-1. 스레드를 직접 사용할 때의 문제점 스레드를 직접 생성해서 사용하면 다음과 같은 3가지 문제가 있다. 스레드 생성 시간으로 인한 성능 문제 스레드 관리 문제 Runnable 인터페이스의 불편함 12-1-1. 스...
강의 : 김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성 11. 동시성 컬렉션 우리가 일반적으로 자주 사용하는 ArrayList, LinkedList, HashSet, HashMap 등 많은 자료 구조 대부분은 스레드 세이프 하지 않다. 그리고 자료 구조들이 제공하는 add() 와 같은 연산은 원자적으로 보이지만 그렇지 않다. 연산 ...
강의 : 김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성 10. CAS - 동기화와 원자적 연산 원자적 연산은 연산이 CPU에서 더 이상 나눌 수 없는 단위로 수행되는 것을 의미한다. 따라서 멀티스레드 상황에서 다른 스레드의 간섭 없이 안전하게 처리될 수 있다. 1씩 값을 증가하는 연산을 멀티스레드 환경에서 실행하면 여러 스레드가 동시...
강의 : 김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성 9. 생산자 소비자 문제 생산자가 생산자를 깨우고, 소비자가 소비자를 꺠우는 비효율 문제를 어떻게 해결할 수 있을까? 생산자 스레드는 데이터를 생성하고 스레드 대기 집합에서 대기 중인 소비자 스레드를 깨워야 한다. 반대로 소비자 스레드는 데이터를 소비하고 스레드 대기 집합에서 대...
강의 : 김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성 8. 생산자 소비자 문제 멀티스레드 프로그래밍에서 자주 등장하는 동시성 문제 중 하나로, 여러 스레드가 동시에 데이터를 생산하고 소비하는 상황을 다룬다. 생산자(Producer): 데이터를 생성하는 역할을 한다. 소비자(Consumer): 데이터를 사용하는 역할을 한다...
강의 : 김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성 6. 동기화 출금 예제 - 동시성 문제 public interface BankAccount { boolean withdraw(int amount); int getBalance(); } public class MyBankAccount implements BankAc...
강의 : 김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성 1. 스레드 생성 스레드는 Thread 클래스를 상속 받거나 Runnable 인터페이스를 구현해 만들 수 있다. 다른 클래스나 인터페이스를 상속 받을 수 있고 스레드와 실행할 작업을 분리하고 여러 스레드에서 Runnable 을 재사용하기 위해 보통 Runnable 인터페이스를 구현해...
4천만 MAU 를 지탱하는 서비스 설계와 데이터 처리 기술 강의 메모 1. 대규모 서비스에서 발생하는 기술적 이슈 및 장애 사례 1-1. IT 서비스 혁신 = 비즈니스 모델의 혁신 ∋ 기술의 혁신 {기술 발전}이나 {소비자 욕구 변화}에 따라 혁신적인 {제품 또는 서비스}를 제공 aws - {가상화 기술 발전}과 {합리적 소비 확산}에 따라 혁신적인...
RoutingDataSource 를 사용한 분산 데이터베이스 환경에서 JTA 를 이용한 트랜잭션 처리 네이버 D2 문서를 읽고 필요한 내용을 추가하고 정리한 문서입니다. 전체 테스트 코드는 이 링크 를 확인해 주세요. 1. 테스트 환경 1) Java 1.8 2) 데이터베이스 구성 3) 주요 Maven 의존성 - spring-boot-...
1. 들어가기 비즈니스 로직과 관련된 쿼리들이 여러 종류의 데이터베이스에 걸쳐 수행될 수 있습니다. 이 경우 하나의 데이터베이스를 대상으로 하는 DataSourceTransactionManager 를 사용한 방법으로는 트랜잭션 동기화를 사용할 수 없습니다. JdbcTemplate 내부에서 DataSourceTransactionManager 를 통해 ...