개발/병렬 프로그래밍

개발/병렬 프로그래밍

자바 병렬 프로그래밍 - 8장 스레드 풀 활용

스레드 풀 설정과 튜닝 시 사용할 수 있는 고급 옵션을 살펴보고 흔히 발생할 수 있는 난관을 헤쳐 나갈 수 있는 방법에 대해서 알아본다. 8.1작업과 실행 정책 간의 보이지 않는 연결 관계 ● Executor 프레임워크를 씀으로써 작업 생성과 실행이 분리된다.● 일정한 조건을 갖춘 Executor 프레임워크 실행 정책이 필요한 작업에는 다음과 같은 것들이 있다.- 의존성이 있는 작업 : 활동성 문제가 발생할 수 있음- 스레드 한정 기법을 사용하는 작업 : 단일 스레드로 동작해야 하는 정책이 있어야 함- 응답 시간이 민감한 작업 : 스레드 풀 크기에 따라 응답 시간이 달리질 수 있음- ThreadLocal 을 사용하는 작업 : 스레드 풀 사용 시 값이 재사용될 수 있음 ● 스레드 풀은 동일하고 서로 독립적..

개발/병렬 프로그래밍

자바 병렬 프로그래밍 - 7장 중단 및 종료

7장 중단 및 종료 작업을 취소하고 인터럽트를 거는 부분에 대한 개념, 작업이나 서비스가 취소 요청에도 잘 반응하도록 프로그램하는 방법에 대해 알아본다. 7.1 작업 중단 7.2 스레드 기반 서비스 중단 7.3 비정상적인 스레드 종료 상황 처리 7.4 JVM 종료 7.1 작업 중단 자바에는 스레드가 작업을 실행하고 있을 때 강제로 멈추도록 하는 방법이 없음 대신 인터럽트(interrupt)를 사용할 수 있음. 인터럽트란, 특정 스레드에게 작업을 멈춰달라고 요청하는 것 (명령이 아닌 요청이다.) 실행 중인 스레드를 강제로 멈추게 하기 보다는 작업을 진행하던 스레드에서 스스로 마무리하는 것이 정상적으로 종료할 수 있어서 가장 적절한 방법임 7.1 작업 중단 실행 중인 작업을 취소하고자 하는 요구사항이 생기는..

개발/병렬 프로그래밍

자바 병렬 프로그래밍 - 6장 작업실행

6.1 스레드에서 작업 실행 6.1.1 작업을 순차적으로 실행 6.1.2 작업마다 스레드를 직접 생성 6.1.3 스레드를 많이 생성할 때의 문제점 6.2 Executor 프레임웍 6.2.1 예제: Executor를 사용한 웹서버 6.2.2 실행 정책 6.2.3 스레드 풀 6.2.4 Executor 동작 주기 6.2.5 지연 작업, 주기적 작업 6.3 병렬로 처리할 만한 작업 6.3.1 예제: 순차적 페이지 렌더링 6.3.2 결과가 나올 때까지 대기: Callable과 Future 6.3.3 예제: Future를 사용해 페이지 렌더링 6.3.4 다양한 형태의 작업을 병렬로 처리하는 경우의 단점 6.3.5 CompletionService: Executor와 BlockingQueue의 역할 6.3.6 예제: ..

개발/병렬 프로그래밍

자바 병렬 프로그래밍 - 5장 구성 단위

5장 구성 단위 병렬 프로그래밍 과정에서 유용하게 사용할 수 있는 자바 패키지에 포함되어 있는 기본 라이브러리들과 몇 가지 디자인 패턴에 대해 알아본다. 5.1 동기화된 컬렉션 클래스 5.1.1 동기화된 컬렉션 클래스의 문제점 5.1.2 Iterator와 ConcurrentModificationException 5.1.3 숨겨진 Iterator 5.2 병렬 컬렉션 5.2.1 ConcurrentHashMap 5.2.2 Map 기반의 또 다른 단일 연산 5.2.3 CopyOnWriteArrayList 5.3 블로킹 큐와 프로듀서-컨슈머 패턴 5.3.1 예제: 데스크탑 검색 5.3.2 직렬 스레드 한정 5.3.3 덱, 작업 가로채기 5.1 동기화된 컬렉션 클래스 대표적인 동기화 컬렉션 클래스 Vector, H..

개발/병렬 프로그래밍

자바 병렬 프로그래밍 - 4장 객체 구성

컴포넌트의 스레드 안정성을 안정적으로 확보하고 개발자가 코드 작성 과정에서 실수를 해도 스레드 안정성을 해치지 않도록 도와주는 클래스 구성 방법에 대해 알아봄 4.1 스레드 안전한 클래스 설계 4.1.1 동기화 요구사항 정리 4.1.2 상태 의존 연산 4.1.3 상태 소유권 4.2 인스턴스 한정 4.2.1 자바 모니터 패턴 4.2.2 예제: 차량 위치 추적 4.3 스레드 안전성 위임 4.3.1 예제: 위임 기법을 활요한 차량 추적 4.3.2 독립 상태 변수 4.3.3 위임할 때의 문제점 4.3.4 내부 상태 변수를 외부에 공개 4.3.5 예제: 차량 추적 프로그램의 상태를 외부에 공개 4.4 스레드 안전하게 구현된 클래스에 기능 추가 4.4.1 호출하는 측의 동기화 4.4.2 클래스 재구성 4.5 동기화..

개발/병렬 프로그래밍

자바 병렬 프로그래밍 - 3장 객체 공유

메모리상의 공유된 변수를 여러 스레드에서 서로 사용할 수 있게 하려면 반드시 동기화 기능을 구현해야 한다. 동기화되지 않은 상황에서 메모리상의 변수를 대상으로 작성해둔 코드가 '반드시 의도한대로 동작할 것이다'라고 단정지을 수 없다. 여러 스레드에서 공동으로 사용하는 변수에는 항상 적절한 동기화 기법을 적용한다. 특정 변수에 값을 저장하거나 읽는 코드가 여러 스레드에서 앞서거니 뒤서거니 실행되면 이전에 저장해뒀던 값을 가져가지 못할 수 있음 예제 3.1 변수를 공유하지만 동기화되지 않은 예제 ready 변수의 값을 읽기 스레드에서 영영 읽지 못할 수 있어서 무한 반복에 빠질 수 있다. 자바 메모리 모델에서는 별다른 동기화 구조가 잡혀있지 않으면 컴파일러가 직접 코드 실행 순서를 조절하여 레지스터 캐시, ..

bebeside77
'개발/병렬 프로그래밍' 카테고리의 글 목록 (2 Page)