Concurrency in JDK 5.0 서울시립대학교 인공지능연구실 신현주 2007.05.05.

Slides:



Advertisements
Similar presentations
Big Data & Hadoop. 1. Data Type by Sectors Expected Value using Big Data.
Advertisements

2010 – 06 – 24 주간 보고서.
메인 화면 v1.0.
USB Interface study 결과
Oozie Web API 기능 테스트 이승엽.
Index SendMemo 기능 Q & A 팀 소개 배경 및 목적 구현
MS-Access의 개요 1강 MOS Access 2003 CORE 학습내용 액세스 응용 프로그램은 유용한 데이터를
Samsung Electronics 5 forces
(개정판) 뇌를 자극하는 Red Hat Fedora 리눅스 서버 & 네트워크
제 09 장 데이터베이스와 MySQL 학기 인터넷비즈니스과 강 환수 교수.
PHP입문 Izayoi 김조흔.
CDC Connected Device Configuration CLDC보다 많은 리소스를 가진 시스템을 대상으로 설정
18장. 방화벽 컴퓨터를 만들자.
Windows Server 장. 사고를 대비한 데이터 백업.
제 6장. 생성자와 소멸자 학기 프로그래밍언어및실습 (C++).
8.1 인터페이스 개요와 인터페이스 정의 8.2 인터페이스의 사용 8.3 인터페이스의 상속 8.4 인터페이스 참조
4장. 웹로직 서버상에서의 JDBC와 JTA의 운용
Linux서버를 이용한 채팅프로그램 지도 교수님 : 이형원 교수님 이 름 : 이 은 영 학 번 :
스레드란? 멀티 태스킹(muli-tasking)는 여러 개의 애플리케이션을 동시에 실행하여서 컴퓨터 시스템의 성능을 높이기 위한 기법 그림23-1. 병철 처리의 예.
Chapter 06 프로세스와 예약작업 관리 Solaris 1. 프로세스 관리
SqlParameter 클래스 선문 비트 18기 발표자 : 박성한.
자바 5.0 프로그래밍.
Chapter 03 : 서블릿 ( Servlet ) 개요. chapter 03 : 서블릿 ( Servlet ) 개요.
자바 5.0 프로그래밍.
신청 가능한 일정을 확인 후 일정의 평가 내용을 클릭한다. (ex, 정기,서울 트윈)
Grade Server Team14. Attention Seeker
Eclipse 를 이용한 네트워킹 퍼즐 게임 “Scrambled Net” 담당 교수님 전진우 교수님 최은아.
자바 5.0 프로그래밍.
Subject : Thread Written by: 김형근,류명운.
15장. 컬렉션 프레임워크.
2장. 데이터베이스 관리 시스템 데이터베이스 관리 시스템의 등장 배경 데이터베이스 관리 시스템의 정의
뇌를 자극하는 Windows Server 2012 R2
Go Lang 리뷰 이동은.
HTTP 프로토콜의 요청과 응답 동작을 이해한다. 서블릿 및 JSP 를 알아보고 역할을 이해한다.
컴퓨터소프트웨어설계및실험 년 1학기 실험계획 -.
TFT-LCD 구조 동작원리 응용분야.
Term Projects 다음에 주어진 2개중에서 한 개를 선택하여 문제를 해결하시오. 기한: 중간 보고서: 5/30 (5)
뇌를 자극하는 Windows Server 장. 원격 접속 서버.
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
27강 JAVA Collections - II - Map계열 컬렉션 클래스 살펴보기 - Set계열 컬렉션 클래스 살펴보기
USN(Ubiquitous Sensor Network)
자바 5.0 프로그래밍.
3D 프린팅 프로그래밍 01 – 기본 명령어 강사: 김영준 목원대학교 겸임교수.
컴퓨터 프로그래밍 기초 - 10th : 포인터 및 구조체 -
2D Game Programming Project 1
20장. 객체지향 프로그래밍 01_ 객체지향 프로그래밍의 시작.
서울대학교 컴퓨터공학과 인공지능 연구실 엄 재 홍
자바 5.0 프로그래밍.
12장 쿠키와 세션 이장에서 배울 내용 : 쿠키와 세션은 웹 페이지 간에 정보를 유지할 때 사용된다. 쿠키와 세션은 사용되는 형태가 비슷하나, 쿠키는 웹 브라우저(클라이언트) 쪽에 저장되고, 세션은 웹 서버 쪽에 저장된다. 이 번장에서는 이들에 대해 학습한다.
데이터 베이스 DB2 관계형 데이터 모델 권준영.
DHCP 조지훈 김대성 이정민 용석중.
컴퓨터 소프트웨어 설계 및 실험 년 1학기 실험계획 -.
DK-128 직렬통신 기초 아이티즌 기술연구소
객체기반 SW설계 팀활동지 4.
“웹과 모바일을 연동한 평가 간편 시스템” vol
STS 에서 웹 서버 설치 방법.
12강. 컨트롤러 컨트롤러 클래스 제작 요청 처리 메소드 제작 뷰에 데이터 전달
모션 캡쳐와 3D-MAX를 활용한 컴퓨터 애니메이션
클래스 : 기능 CHAPTER 7 Section 1 생성자(Constructor)
3장 JSP프로그래밍의 개요 이장에서 배울 내용 : JSP페이지의 기본적인 개요설명과 JSP페이지의 처리과정 그리고 웹 어플리케이션의 구조에 대해서 학습한다.
제 8장. 클래스의 활용 학기 프로그래밍언어및실습 (C++).
01. 분산 파일 시스템의 개요 네트워크에 분산된 파일을 사용자가 쉽게 접근하고 관리할 수 있게 해준다.
JSP Programming with a Workbook
발표자 : 이지연 Programming Systems Lab.
2D 게임 프로그래밍 제안서 김보명.
다자간 채팅프로그램 김형도 허영민
Completion Port기반의 채팅프로그램
Power Java 제23장 스레드.
M.B.TEAM 중간 발표 (5.18) 이 제걸 백 인호.
7 생성자 함수.
Presentation transcript:

Concurrency in JDK 5.0 서울시립대학교 인공지능연구실 신현주 2007.05.05

What’s new in JDK 5.0 for concurrency JVM-level change Compare-and-swap (CAS) 지원 JDK library classes에서 사용하기 위한 변화 Low-level utility classes Locking ex) ReentrantLock Atomic variables ex) AtomicBoolean, Atomicinteger … High-level utility classes thread pool, barriers, semaphores, mutexes, exchangers …

Thread-safe collections Weakly consistent iterators Collection iterator 작업을 할 동안, collection을 수정할 경우 ConcurrentModificationException을 발생 CopyOnWriteArrayList / CopyOnWriteArraySet Collection에 추가/수정된 element을 backing array에 저장해서 문제를 해결. Iterator 작업 중에도 collection 수정 가능 ConcurrentHashMap 여러 개의 lock을 이용해서 문제를 해결

Thread-safe collections Queue List를 대부분 Queue 용도로 사용 기존 List collections은 새로 추가된 Queue interface를 구현하고 있음 BlockingQueue 보통 Queue를 사용하는 목적은 data 공유를 위해서이다. 생산자 Thread에서 data를 생산해 내는 속도와 소비자 Thread에서 data를 소비하는 속도가 다른 경우이다. Data 공유 목적으로 Queue를 사용하는 경우에 구현 방법 Polling 방식 - while(true) {} Blocking 방식 - Object.wait() / Object.notifyAll() BlockingQueue : Blocking 방식으로 Queue를 구현해 놓음 일반 메소드 (offer() / take())를 사용하는 것처럼 사용

Task management Thread creation Thread 생성은 컴퓨터 자원을 많이 소모하는 heavy job이다. 웹 서버와 같이 실제 작업 수행 시간은 짧지만, 많은 요청이 있는 경우, 매 요청마다 Thread를 생성하는 것은 overhead가 크다. 이 경우 모든 요청을 처리할 수 없을 수도 있다. 심각한 경우, 웹 서버가 멈춰버릴 수도 있다. Thread pool을 이용해서 Thread를 재사용한다.

Thread-safe collections The Executor framework Thread pool Executors.newFixedThreadPool(int n) 고정된 숫자의 Thread를 활용해서 Thread pool을 구현 Executors.newCachedThreadPool() Thread의 제한은 없다. 사용 가능한 Thread가 부족하면 새 Thread를 생성한다. Task가 끝나면 일정 시간 Thread를 가지고 있다가 더 이상 사용하지 않으면 Thread를 폐기한다. Executors.newSingleThreadPool() 한 개의 Thread를 사용해서 Thread pool을 구현. 많은 수의, 수행 시간이 짧은 Background 작업을 하는데 적합

Thread-safe collections The Future interface Task의 완료되었는지 확인할 수 있다. Task 수행을 중간에 cancel할 수 있다. Task 수행 결과를 확인할 수 있다. CompletionService Task 수행과 Task 결과를 사용한 processing을 분리한다.

Synchronizer classes Semaphores Mutex CyclicBarrier Counting semaphores 지정된 수의 thread만 blocking 구역 안에 들어갈 수 있다. Mutex Counting semaphores의 특별한 형태 1개의 Thread만 blocking 구역 안에 들어갈 수 있다. CyclicBarrier 지정된 수의 Thread 모두가 barrier point에 도착할 때까지 대기 상태로 만들기 위한 방법을 제공한다. 또한 지정된 수의 Thread 모두가 barrier point에 도착하면, 추가적인 작업을 할 수 있는 방법을 제공한다.

Synchronizer classes CountdownLatch Exchanger CyclicBarrier와 비슷한 역할을 한다. barrier point 도착과 대기 상태를 분리시켰다. CyclicBarrier.await()를 부르면 해당 Thread는 barrier point에 도착한 것이 되고 바로 대기 상태에 들어가게 된다. CountdownLatch에서는 barrier point 도착은 CountdownLatch.countDown()으로 대기 상태는 CountdownLatch.await()로 분리시켰다. Exchanger 두 Thread 간의 data 객체 교환을 위한 방법을 제공한다. 소비자, 생산자 문제에서 소비자, 생산자 각각 버퍼를 가지고 있는 경우 소비자는 버퍼가 가득 찼을 때 Exchanger의 barrier point를 부르고, 생산자는 버퍼는 텅 비게 되었을 때 Exchanger의 barrier point를 부른다. 두 Thread 모두 barrier point에 도착하면, 생산자와 소비자의 버퍼를 서로 교환하게 된다.

Low-level facilities Lock Atomic variables synchronized 성능 계선 Compare-and-swap (CAS)를 활용 java.util.concurrent 패키지 구현에 사용한 기본 객체