6. 동시성, 데이터가 꼬이기 전에 잡아야 한다

동시성 문제 | 잠금을 이용한 동시 접근 제어 | 원자적 타입과 동시성 지원 컬렉션 | DB와 동시성: 선점 잠금과 비선점 잠금 | 잠금 주의 사항

서버와 동시 실행

트래픽 많지 않아도 동시 요청은 발생

ex. 1개 요청 처리 0.1초 → 100개 요청 1초 안에 처리하려면 0.1초마다 10개 동시 처리 필요

클라이언트 요청 → 서버 → DB 쿼리 요청 & 결과 응답

동시에 여러 클라이언트 요청 → 서버도 동시에 여러 쿼리 전송 ⇒ 서버는 요청을 동시에 처리해야 함

IF. 동시 처리 X 각 요청 순차 처리 → 서버의 전체적인 성능(처리량, 응답 시간) ↓

서버가 동시에 여러 클라이언트 요청 처리하는 방식 2가지

⇒ 서버 동시 실행 → (-) 서로 다른 두 스레드 동시에 같은 데이터 조회, 수정할 수 있음

Increaser 클래스

public class Increaser {
	private int count = 0;
	
	public void inc() {
		count = count + 1;
	}
	
	public int getCount() {
		return count;
	}
}