JAVA/Concurrency 6

# Java Concurrency In Practice - Chapter3

Sharing Object 2 장 초반에 올바른 동시 프로그램 작성은 주로 변경 가능 공유 상태에 대한 액세스 관리에 관한 것이라고 언급했습니다. 이 장에서는 여러 스레드가 안전하게 액세스 할 수 있도록 객체를 공유 및 게시하는 기술에 대해 설명합니다. 이 둘은 스레드 안전 클래스를 구축하고 java.util.concurrent 라이브러리 클래스를 사용하여 동시 애플리케이션을 안전하게 구성하기위한 토대를 마련합니다. 우리는 동기화 된 블록과 메소드가 어떻게 동작이 원자 적으로 실행되도록 하는지를 보았지만 동기화는 원 자성 또는 "중요한 부분"에 대한 경계라는 일반적인 오해입니다. 동기화에는 또 다른 중요하고 미묘한 측면이 있습니다 : 메모리 가시성. 우리는 다른 스레드가 객체를 사용할 때 한 스레드가 객..

JAVA/Concurrency 2020.02.15

# Java Concurrency In Practice - Chapter 2

Thread Safety Java 동기화의 기본 메커니즘은 synchronized 키워드이지만 "synchronized (동기화)"라는 용어에는 volatile 변수, exclusive locking (명시적 잠금) 및 atomic 변수의 사용도 포함된다. 이 규칙이 적용되지 않는 "특별한"상황이 있다고 생각하려는 유혹을 피해야한다. Java의 동기화 메커니즘을 사용하지 않더라도 테스트를 통과하고 프로그램이 작동하고 수년 동안 성능이 좋을 수 있지만, 그 프로그램은 여전히 동기화 문제로 인해 언제든지 중단 될 가능성이 있는 위험한 프로그램일 것이다. 여러 스레드가 적절한 동기화없이 동일한 변경 가능 상태 변수에 접근하면 프로그램은 예기치 않게 동작할 것이다. 이런 문제를 해결하기 위한 세가지 방법이 존재..

JAVA/Concurrency 2020.02.13

# Java Concurrency In Practice - Chapter 1

Introduction 1.1 간략한 동시성의 역사 (A (Very) Brief History of Concurrency) 리소스 활용 (Resource utilizatio) 프로그램은 입력 또는 출력과 같은 외부 작업을 기다려야하며 대기하는 동안 유용한 작업을 수행 할 수 없다. 이 대기 시간을 사용하여 다른 프로그램을 실행하는 것이 더 효율적일 것이다. 공평 (Fairness) 여러 사용자 및 프로그램이 시스템 리소스에 대해 동일한 소유권을 주장 할 수 있다. 한 프로그램을 실행 한 다음 그 프로그램이 완전히 종료된 후, 다른 프로그램을 시작하는 것보다 세밀한 시간 슬라이싱을 통해 컴퓨터 자원을 공유하는 것이 좋다. 편의 (Convenience) 단일 프로그램이 모든 작업을 수행하도록 작성하는 것보다..

JAVA/Concurrency 2020.02.03

# Java Concurrency and Multithreading Tutorial - Concurrency vs Parallelism

Concurrency(동시성) 및 Parallelism(병렬 처리)라는 용어는 종종 다중 스레드 프로그램과 관련하여 사용된다. 그러나 Concurrency과 Parallelism은 정확히 무엇을 의미하며, 이 두 용어는 어떻게 다른가? Concurrency Concurrency는 응용 프로그램이 둘 이상의 작업을 동시에 진행하고 있음을 의미한다. 컴퓨터에 CPU가 하나만 있으면 응용 프로그램이 동시에 두 개 이상의 작업을 진행하지 못할 수 있지만, 응용 프로그램 내부에서 한 번에 두 개 이상의 작업이 처리되고 있다. 대신 CPU는 작업이 완료 될 때까지 다른 작업간에 전환한다. 내부에서 단일 스레드만 실행하더라도 동시 응용 프로그램을 가질 수 있다. CPU가 작업이 완료될 때까지 작업간 전환을 반복하며 ..

JAVA/Concurrency 2020.01.31

# Java Concurrency and Multithreading Tutorial - Multithreading Benefits

Multithreading Benefits 멀티 스레딩의 가장 중요한 이점은 아래와 같다. Better CPU utilization Simple program design in some situations More responsive programs More fair division of CPU resources between different tasks Better CPU Utilization 로컬 파일 시스템에서 파일을 읽고 처리하는 응용 프로그램을 상상해봐라. 디스크에서 파일을 읽는데 5초가 걸리고 처리하는데 2초가 걸린다고 할 때, 두 개의 파일을 읽으면 총 14초가 소요된다. 디스크에서 파일을 읽을 때 대부분의 CPU 시간은 디스크가 데이터를 읽을 때까지 대기한다. 그 시간 동안 CPU는 거의 ..

JAVA/Concurrency 2019.12.31

# Java Concurrency and Multithreading Tutorial

Java Concurrency는 Java 플랫폼에서의 멀티스레딩, 동시성 및 병렬 처리를 다루는 용어이다. Java Concurrency Tutorial에서는 멀티스레딩, 동시성 구성, 동시성 문제점, 비용 등 Java 멀티스레딩 관련 이점의 핵심 개념을 다룰 것이다. What is Multithreading? 멀티스레딩은 동일한 응용 프로그램 내에 여러 실행 스레드가 있음을 의미한다. 스레드는 응용 프로그램을 실행하는 별도의 CPU와 같다. 따라서 다중 스레드 응용 프로그램은 여러 CPU가 동시에 코드의 다른 부분을 실행하는 응용 프로그램과 같다. 단, 스레드는 CPU와 같지는 않다. 일반적으로 단일 CPU는 여러 스레드간에 실행 시간을 공유하여 지정된 시간동안 각 스레드 간에 전환이 일어나며, 응용 ..

JAVA/Concurrency 2019.12.30