반응형

쓰레드 3

태태개발일지 - 고급 java (김영한) 컬랙션 동시성

전 글에서 CAS 연산을 다룬 후  컬랙션 동시성에 대해 글을 작성해보려한다. Collection 동시성? 자바에서는 List, Map, Set 컬랙션들은 기본적으로 동기화가 되어있지 않기 때문에, 멀티쓰레드 환경에서 사용할 경우 동기화를 고려해야한다.해결방법 1. 프록시를 사용하여 synchronized를 메서드 마다 붙여서 동시성을 보장해준다. 2. Collections.synchronizedXXX() 이라는 동기화된  컬렉션을 사용한다.  사실 1번과 2번 둘다 사용할 수 는 있지만, 현업에서는 더 간편하고 효율적으로 사용하기 위해서 java.util.concurrent를 사용한다. 종류(1) Concurrent List클래스특징CopyOnWriteArrayList- 읽기 연산이 많고, 쓰기 연산이..

JAVA 2025.03.19

태태개발일지 - 멀티스레딩(김영한 고급 자바)

메모리 가시성 (Memory Visibility) 스레드를 선언할 때 공유변수를 volatile 으로 선언하는 이유를 알아보았다. 쓰레드와 메인쓰레드는 효율을 위해서 캐시에 변수의 값을 집어넣고 프로세스를 진행한다.즉. Main Thread에서 기존 쓰레드의 공유변수의 상태값을 바꾼다해도 캐시의 값이 바뀌기 때문에 쓰레드는 그 값의 변화를 인지하지 못한다는 것이다. private Boolean flag;를 쓰레드안에 선언해놓고 MainMethod에서flag = "false";를 선언한다고 해도 바로 실행중인 멀티 스레드에서 인지하지 못한다는 뜻이다.이것이 메모리의 가시성이다. 이유위에 언급한 것 처럼, MainThread 와 Multi Trhead모두 변수의 값을 캐시에 불러와서 그 값을 지속적으로 읽기..

JAVA 2025.02.17

태태개발일지 - 김영한의 실전 자바 - 고급편

멀티태스킹과 멀티 프로세싱 멀티태스킹프로그램의 실행  프로그램을 구성하는 코드를 순서대로 CPU에서 연산(실행)하는 일이다.  코어가 하나있어도, 실행 시간을 분할하여 마치 동시에 실행되는 것 처럼 하는 기법을 시분할 기법이라고한다.: 실제로 동시에 실행되는게 아니라 일정한 원리를 통해서 번갈아가 면서 실행한다.이것을 운영체제가 결정하는(스케줄링) 이라고 한다. 멀티프로세싱 코어가 여러개일때?cpu안에는 실제 연산을 처리할 수 있는 코어라는 것이있다.tip. 요즘은 cpu안에 2개이상의 코어가 들어가있다. 2개가 일정한 원리를 가지고 수행하면 더 빠르다. 멀티 프로세싱:cpu를 사용하여 동시에 여러가지 작업을 수행.하드웨어 기반으로 성능 향상다중 코어 프로세서를 사용하는 현대 컴퓨터 시스템  멀티 테스킹..

JAVA 2025.01.30
반응형