전체 글

개발에 대한 내용을 주로 다루는 블로그입니다.
개발/병렬 프로그래밍

자바 병렬 프로그래밍 - 13장 명시적인 락

ReentrantLock 은 자바5.0 에서 추가됐으며 암묵적인 락으로 할 수 없는 고급 기능을 가지고 있다. 13.1 Lock 과 ReentrantLock - Lock 인터페이스는 조건없는 락, 폴링 락, 타임아웃이 있는 락, 락 확보 대기상태에 인터럽트를 걸 수 있는 기능을 가진다. - 모든 작업이 명시적이다. public interface Lock { void lock(); void lockInterruptibly() throws InterruptedException(); boolean tryLock(); boolean tryLock( long timeout, TimeUnit unit() throws InterruptedException(); void unlock(); Condition newCon..

개발/병렬 프로그래밍

자바 병렬 프로그래밍 - 11장 성능, 확장성

병렬 프로그래밍의 성능을 분석, 모니터링, 성능 향상 방법에 대한 내용. 성능 튜닝은 프로그램 내부 구조를 복잡하게 할 수 있음. 일단 정상적으로 동작하도록 만든 후, 튜닝 하는 것이 좋다. 11.1 성능에 대해 - 성능을 높인다는 것은 더 적은 자원을 사용하면서 더 많은 일을 하도록 만드는 것이다. - 여러 개의 스레드를 사용하려 한다면 항상 단일 스레드를 사용할 때보다 성능상의 비용을 지불해야만 한다. 스레드간의 작업 내용 조율(락, 신호 보내기, 메모리 동기화)컨텍스트 스위칭스레드를 생성하거나 제거하는 일스레드의 효율적인 스케줄링 11.1.1 성능 대 확장성 애플리케이션 성능을 측정하는 데이터 - 서비스 시간, 대기 시간, 처리량, 효율성, 확장성, 용량 단일 티어 애플리케이션이 다중 티어 애플리케..

개발/병렬 프로그래밍

자바 병렬 프로그래밍 - 10장 활동성 최대로 높이기

10.1 데드락 자바 프로그램에서 데드락이 발생하면 프로그램을 강제로 종료하기 전에는 영원히 멈춘 상태로 유지된다. 10.1.1 락 순서에 의한 데드락 예제 코드는 데드락이 발생할 여지가 있다. public class LeftRightDeadlock { private final Object left = new Object(); private final Object right = new Object(); public void leftRight() { synchronized(left) { synchronized(right) { doSomething(); } } } public void rightLeft() { synchronized(right){ synchronized(left) { doSomething()..

개발/병렬 프로그래밍

자바 병렬 프로그래밍 - 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 예제: ..

bebeside77
Spread your wings