Java85 71.멀티 Thread 프로그래밍에서의 동기화 critical section 과 semaphore - critical section은 두 개 이상의 thread가 동시에 접근하는 경우 문제가 생길 수 있기 때문에 동시에 접근할 수 없는 영역 - semaphore는 특별한 형태의 시스템 객체이며 get/release 두 개의 기능이 있다. - 한 순간 오직 하나의 thread 만이 semaphore를 얻을 수 있고, 나머지 thread들은 대기(blocking)상태가 된다. - semaphore를 얻은 thread만이 critical section에 들어갈 수 있다. - Park 과 ParkWife가 동시에 Bank 자원에 접근하여 작업이 이루어지는 경우의 예제 - SyncMain.java class Bank { private int money = 1.. 2022. 6. 7. 70.Thread 클래스의 여러 메서드들 Thread 우선순위 - Thread.MIN_PRIORITY(=1) ~ Thread.MAX_PRIORITY(=10) - 디폴트 우선순위 : Thread.NORMAL_PRIORITY(=5) - 우선순위가 높은 Thread가 CPU의 배분을 받을 확률이 높다 - setPriority()/getPriority() - Thread 우선순위 예제 - PriorityTest.java class PriorityThread extends Thread{ public void run() { int sum = 0; Thread t = Thread.currentThread(); System.out.println(t+"start"); for(int i = 0; i 2022. 6. 7. 69.자바에서 Thread 만들기 Thread란? - process 실행중인 프로그램이 실행되면 OS로부터 메모리를 할당받아 프로세스 상태가 됨 - thread하나의 프로세스는 하나 이상의 thread를 가지게 되고, 실제 작업을 수행하는 단위는 thread임 multi-threading - 여러 thread가 동시에 수행되는 프로그래밍, 여러 작업이 동시에 실행되는 효과 - thread는 각각 자신만의 작업 공간을 가짐 (context) - 각 thread 사이에서 공유하는 자원이 있을 수 있음 (자바에서는 static instance) - 여러 thread가 자원을 공유하여 작업이 수행되는 경우 서로 자원을 차지하려는 race condition이 발생할 수 있음 - 이렇게 여러 thread가 공유하는 자원중 경쟁이 발생하는 부분을 c.. 2022. 6. 7. 68.데코레이터 패턴을 활용한 커피 머신 프로그램 Decorator Pattern - 자바의 입출력 스트림은 decorator pattern 임 - 여러 decorator들을 활용하여 다양한 기능을 제공 - 상속보다 유연한 구현방식 - 데코레이터는 다른 데코레이터나 또는 컴포넌트를 포함해야 함 - 지속적인 기능의 추가와 제거가 용이함 - decorator와 component는 동일한 것이 아님 ( 기반 스트림 클래스가 직접 읽고 쓸 수 있음, 보조 스트림은 추가적인 기능 제공) 커피를 만들어보자 - Decorator Pattern을 활용하여 커피를 만들어 봅시다. 아메리카노 카페 라떼 = 아메리카노 + 우유 모카 커피 = 아메리카노 + 우유 + 모카시럽 크림 올라간 모카커피 = 아메리카노 + 우유 + 모카시럽 + whipping cream 커피는 컴포넌.. 2022. 6. 7. 이전 1 2 3 4 5 6 ··· 22 다음