2024/11/12 4

ThreadLocal vs synchronized 차이점

멀티 스레드 환경에서 동시성 이슈는 자주 일어난다. 자바에서 synchronized 와 약간 비슷한 공통점도 있지만 성격 자체가 다르다. 공통점은 동시성 관련 내용을 해결해주지만 동작 방식이 완전 다르다. 1. synchronizedsynchronized는 객체 공유를 제어 하는 역할이다.여러 스레드가 동일한 객체를 접근할때 블로킹을 통해 안전성을 보장한다.동기화 비용이 있어서 블로킹으로 인해 성능 저하가 있을수도 있습니다. 2. ThreadLocalThreadLocal는 각 독립적인 스레드의 값을 가지게 한다. 스레드 마다 고유의 값을 보장한다.각 스레드에 고유의 값을 저장한다.동기화를 신경 쓸일 없어서 성능적으로 높지만 메모리 소모가 많을수도 있다. 동시성 문제 해결 측면에서의 차이synchroniz..

Java 2024.11.12

Monitor

모니터란? mutual exclusion(상호 배제) – 하나의 스레드만이 특정한 시점에 메서드를 실행할 수 있습니다. locks기법을 사용합니다.cooperation – 특정 조건이 충족될 때까지 스레드를 대기시키는 기능. wait-set을 사용합니다.해당 기능은 모니터라고 하는 이유는 모니터는 스레드 리소스에 어떻게 접근 하는지 모니터링 하기 때문입니다. 모니터의 특징모니터는 동시성 프로그래밍에 세 가지 주요 기능을 제공합니다:한 번에 하나의 스레드만 critical code section에 mutually exclusive(상호 배제적)으로 접근할 수 있습니다.모니터에서 실행 중인 스레드가 특정 조건이 충족될 때까지 차단될 수 있습니다.스레드는 조건이 충족될 때 다른 스레드에 알릴 수 있습니다.  ..

Java 2024.11.12

Context switching

안녕하세요 오개발입니다. 공부하는 도중 Context switching이란 무엇인가 한번 공부를 해봤습니다.내가 이해 하는 내용으로 보자면 먼저 영어 자체의 해석으로 이해 하였다. 먼저 Context란 (동작, 작업들의 집합)을 (정의, 관리, 실행)하도록 하는 (최소한의 상태, 재료, 속성)을 포함하는 (객체, 구조체, 정보)이다. 다시 말해 Process의 경우 현재 프로세스가 중단 되었을 때, 중단된 시점 부터 다시 프로세스를 실행하기 위한 정보를 Context라고 부른다여기서 다시 말해 멀티 프로세스 개념이 나오는걸로 알고 있다.  Context Switching이란?작업의 주체가 현재 Context를 잠시 중단하고 다른 Context를 실행하는 것을 Context Switching이라 한다.  ..

DevOps 2024.11.12