분류 전체보기 329

멀티 Thread 프로그래밍에서의 동기화

멀티 Thread 프로그래밍에서의 동기화 critical section과 semaphore critical section 은 두 개 이상의 thread가 동시에 접근하는 경우 문제가 생길 수 있기 때문에 동시에 접근할 수 없는 영역 semaphore는 특별한 형태의 시스템 객체이며 get/release 두 개의 기능이 있다. 한 순간 오직 하나의 thread 만이 semaphore를 얻을 수 있고, 나머지 thread들은 대기(blocking) 상태가 된다. semaphore를 얻은 thread 만이 critical section에 들어갈 수 있다. 노란색이 critical section // 일종의 메서드 구간이 될 수도 있고 블록 구간이 될 수도 있다. // 열쇠 get()으로 들어가서 잠근다. //..

Thread 클래스의 여러 메서드들

Thread 클래스의 여러 메서드들 우선순위 / join / Thread 종료하기 priority / join() / while(!flag) Thread PRIORITY - 우선순위 Thread.MIN_PRIORITY(=1) ~ Thread.MAX_PRIORITY(=10) - 1~10까지 가능 디폴트 우선순위 : Thread.NORMAL_PRIORITY(=5) 우선순위가 높은 Thread가 CPU의 배분을 받을 확률이 높다 우선 순위가 높다고 반드시 먼저 수행이 된다는 것은 아님 X setPriority()/getPriority() Thread 우선순위 예제 Thread 생성해주고 extends Thread Thread 확인 메서드 currentThread( ) 우선순위가 비슷비슷하기 때문에 예상 실행 ..

자바에서 Thread 만들기

자바에서 Thread 만들기 Thread 란? process : 실행 중인 프로그램 : 프로그램이 실행되면 OS로부터 메모리를 할당받아 프로세스 상태가 됨 thread : 하나의 프로세스는 하나 이상의 thread를 가지게 되고, 실제 작업을 수행하는 단위는 thread임 multi-threading 여러 thread가 동시에 수행되는 프로그래밍, 여러 작업이 동시에 실행되는 효과 다운로드하면서 화면에 보인다던지 / 여러 작업이 동시에 이루어지는 것처럼 보이는 - thread는 각각 자신만의 작업 공간을 가짐 ( context ) thread는 thread 마다 독립적! 자신의 변수나 처리방법 등을 가지고 있음 각 thread 사이에서 공유하는 자원이 있을 수 있음 (자바에서는 static instanc..

데코레이터 패턴예제 실습 ) 커피 머신 프로그램

데코레이터 패턴을 활용한 커피 머신 프로그램 Decorator Pattern 자바의 입출력 스트림은 decorator pattern 임 여러 decorator들을 활용하여 다양한 기능을 제공 상속보다 유연한 구현 방식 데코레이터는 다른 데코레이터나 또는 컴포넌트를 포함해야 함 지속적인 기능의 추가와 제거가 용이함 component와 decorator는 동일한 것이 아님 ( 기반 스트림 클래스가 직접 읽고 쓸 수 있음, 보조 스트림은 추가적인 기능 제공 ) 예제) 커피를 만들어보아요~ Decorator Pattern을 활용하여 커피를 만들어 봅시다. 커피( 에티오피아 아메리카노 ) 카페 라떼 = 아메리카노 + 우유 모카 커피 = 아메리카노 + 우유 + 모카시럽 커피는 컴포넌트고, 우유, 모카시럽, whip..

직렬화 (serialization)

직렬화 (serialization) Data - Input Output - Stream 은 데이터 형에 따른 메서드를 호출해서 저장하고 복원하는 일 직렬화는 오브젝트 자체 인스턴스 자체를 저장하고 이를 다시 복원하는 방식 파일에 하는 경우도 있고, 네트웍으로 전송할 때, serialization 이란? 인스턴스의 상태를 그대로 파일 저장하거나 네트웍으로 전송하고 (serialization) 이를 다시 복원(deserializatio) 하는 방식 자바에서는 보조 스트림을 활용하여 직렬화를 제공함 ObjectInputStream과 ObjectOutputStream 생성자 설명 ObjectInputStream(InputStream in) InputStream을 생성자의 매개변수로 받아 ObjectInputSt..

여러가지 보조 스트림 클래스들( InputStreamReader, BufferedInputStream, DataInputStream )

여러 가지 보조 스트림 클래스들 InputStreamReader, OutputStreamReader BufferedInputStream, BufferedOutputStream DataInputStream, DataOutputStream 보조 스트림 실제 읽고 쓰는 스트림이 아닌 보조 기능을 제공하는 스트림 FilterInputStream과 FilterOutputStream이 보조 스트림의 상위 클래스들 생성자의 매개변수로 또 다른 스트림(기반 스트림이나 다른 보조 스트림)을 가짐 - 매개변수로 받는 스트림의 기능은 제공하면서 +@ 의 기능을 제공하는 것 - Decorator Pattern으로 구현 됨 상속을 받아서 구현하는 방식으로 하면 hierarchy 가 복잡해짐 - 여러 개의 다양한 기능 조합 제공..

문자 단위 입출력 스트림 ( Reader , Writer )

문자 단위 입출력 스트림 Reader 문자 단위 입력 스트림 최상위 추상 클래스 많은 추상 메서드가 선언되어 있고 이를 하위 스트림이 상속받아 구현함 주요 하위 클래스 클래스 설명 FileReader 파일에서 문자 단위로 읽는 스트림 클래스입니다. InputStreamReader 바이트 단위로 읽은 자료를 문자로 변환해주는 보조 스트림 클래스 입니다. BufferedReader 문자로 읽을 때 배열을 제공하여 한꺼번에 읽을 수 있는 기능을 제공하는 보조 스트림입니다. 주요 메서드 메서드 설명 int read() 파일로부터 한 문자를 읽습니다. 읽은 문자를 반환합니다. int read(char[] buf) 파일로부터 buf 배열에 문자를 읽습니다. int read(char[] buf, int off, in..

I/O 스트림의 구분 , 표준 입출력 스트림

자바의 입출력을 위한 I/O 스트림 앞에서 사용해본 자료 연산을 위한 stream 과는 다른 여기서 말하는 스트림은 자바가 입출력하기 위해서 사용하는 스트림 - 입출력을 왜 스트림이라고 하느냐? 자료가 흘러가는 게 물의 흐름과 같다는 네트워크 용어에서 따와서 사용 입출력이라는 게 디바이스에 의존한다. ( 키보드, 마우스, 화면 출력, 네트워크 출력 등등) 입력받는 대상이나 출력하는 대상에 따라서 코딩이 다양해지는데 - 그 경로를 추상화해서 사용 I/O 스트림을 어려워하는 이유 다 Exception 처리를 해줘야 된다 - 코드가 점점 더 복잡해진다. - 어떨 때 어떤 클래스를 써야 하는지 혼란스럽기도. 입출력 스트림 네트워크에서 자료의 흐름이 물의 흐름과 같다는 비유에서 유래됨 자바는 다양한 입출력 장치에..

사용자 정의 예외 클래스, 로그 남기기

사용자 정의 예외 클래스와 그 활용 사용자 정의 예외 클래스 구현하기 자바에서 제공되는 예외 클래스 외에 프로그래머가 직접 만들어야 하는 예외가 있을 수 있음 기존 예외 클래스중 가장 유사한 예외 클래스에서 상속받아 사용자 정의 예외 클래스를 만든다. 기본적으로 Exception 클래스를 상속해서 만들 수 있음 실습 예제 ) 패스워드에 대한 예외 처리 하기 패스워드를 입력할 때 다음과 같은 경우 오류처리를 합니다. 비밀번호의 길이는 5 이상입니다. 비밀번호는 문자로만 이루어져서는 안 됩니다.(하나이상의 숫자나 특수문자를 포함) 비밀번호는 null일 수 없습니다. 사용자 정의 예외 클래스 구현하기 Exception을 상속받아서 내가 정의한 PassWordException 클래스 만들기 Exception 어..