Java 스레드5 - CAS 동기화와 원자적 연산
강의 : 김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성 10. CAS - 동기화와 원자적 연산 원자적 연산은 연산이 CPU에서 더 이상 나눌 수 없는 단위로 수행되는 것을 의미한다. 따라서 멀티스레드 상황에서 다른 스레드의 간섭 없이 안전하게 처리될 수 있다. 1씩 값을 증가하는 연산을 멀티스레드 환경에서 실행하면 여러 스레드가 동시...
강의 : 김영한의 실전 자바 - 고급 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 를 통해 ...
데이터베이스 트랜잭션 경계와 동기화 테스트 이전 트랜잭션 경계와 동기화 에서 알아본 내용을 실제로 테스트 해 보겠습니다. 전체 코드는 이 링크 를 참고해 주세요. 1. 테스트 구성 JDBC 와 MySql 을 사용해 테스트 했습니다. name 과 seq 컬ㄹ머을 가진 간단한 테이블에 여러 사용자를 같은 트랜잭션에서 추가하고 추가하는 도중 예외 ...
데이터베이스 트랜잭션 경계와 동기화 1. 들어가기 비즈니스 로직과 관련된 쿼리들을 처리하는 도중에 네트워크가 끊기거나 서버에 장애가 생겨 작업을 완료할 수 없게 되면 그 때 까지 처리된 쿼리들은 초기 상태로 되돌려져야 합니다. DBMS 에 하나의 쿼리를 처리하는 경우에는 트랜잭션을 보장한다고 믿을 수 있습니다. 하지만 여러 개의 쿼리 작업을 하...