본문 바로가기

언어99

Thread 3 (멀티 스레드 동기화) critical section 과 semaphore critical section 은 두 개 이상의 thread가 동시에 접근 하는 경우 문제가 생길 수 있기 때문에 동시에 접근할 수 없는 영역 semaphore는 특별한 형태의 시스템 객체이며 get/release 두 개의 기능이 있다. 한 순간 오직 하나의 thread 만이 semaphore를 얻을 수 있고, 나머지 thread들은 대기(blocking) 상태가 된다. semaphore를 얻은 thread 만이 critical section에 들어갈 수 있다. 동기화 (synchronized) 두 개의 thread 가 같은 객체에 접근 할 경우, 동시에 접근 함으로써 오류가 발생 동기화는 임계영역에 접근한 경우 공유자원을 lock하여 다른 thread.. 2021. 5. 29.
Thread 2 (여러 메서드) Thread 우선순위 Thread.MIN.PRIORITY(=1) ~ Thread.MAX.PRIORITY(=10) 디폴트 우선순위: Thread.NORMAL_PRIORITY(=5) 우선 순위가 높은 Thread가 CPU의 배분을 받을 확률이 높다. setPriority()/getPriority() 예제 package ch67; class PriorityThread extends Thread{ public void run(){ int sum = 0; Thread t = Thread.currentThread(); System.out.println( t + "start"); for(int i =0; i 2021. 5. 29.
Thread 1 Thread process 실행 중인 프로그램 프로그램이 실행되면 OS로 부터 메모리를 할당받아 프로세스 상태가 됨 thread: 하나의 프로세스는 하나 이상의 thread를 가지게 되고, 실제 작업을 수행하는 단위는 thread이다 multi-threading 여러 thread가 동시에 수행되는 프로그래밍, 여러 작업이 동시에 실행되는 효과 thread는 각각 자신만의 작업 공간을 가짐(context) 각 thread 사이에서 공유하는 자원이 있을 수 있음 (자바에서는 static instance) 여러 thread가 자원을 공유하여 작업이 수행되는 경우 서로 자원을 차지하려는 race condition이 발생할 수 있음 이렇게 여러 thread가 공유하는 자원중 경쟁이 발생하는 부분을 critical.. 2021. 5. 23.
데코레이터 패턴 Decorator Pattern 자바의 입출력 스트림은 decorator pattern이다 여러 decorator들을 활용하여 다양한 기능을 제공 상속보다 유연한 구현 방식 데코레이터는 다른 데코레이터나 또는 컴포넌트를 포함해야 함 지속적인 기능의 추가와 제거가 용이함 decorator와 component는 동일한 것이 아님(기반 스트림 클래스가 직접 읽고 쓸 수 있음, 보조 스트림은 추가적인 기능 제공) 커피만들기 Decorator Pattern을 활용하여 커피를 만든다 아메리카노 카페 라떼 = 아메리카노 + 우유 모카 커피 = 아메리카노 + 우유 + 모카시럽 크림 올라간 모카커피 = 아메리카노 + 우유 + 모카시럽 + whipping cream 커피는 컴포넌트고, 우유, 모카시럽, whipping c.. 2021. 5. 23.
입출력 클래스(File, RandomAccessFile) File 클래스 파일 개념을 추상화한 클래스 입출력 기능은 없고, 파일의 이름, 경로, 읽기 전용등의 속성을 알 수 없음 이를 지원하는 여러 메서드들이 제공됨 FileTest.java package ch65; import java.io.File; import java.io.IOException; public class FileTest { public static void main(String[] args) throws IOException { File file = new File("D:\\eclipse\\workspace\\JAVA-Chapter2\\a.txt"); file.createNewFile(); System.out.println(file.isFile()); System.out.println(fi.. 2021. 5. 23.
DataStream, 직렬화 DataInputStream과 DataOutputStream 자료가 메모리에 저장된 상태 그대로 읽거나 쓰는 스트림 DataInputStream 메서드 메서드 설명 byte readByte() 1바이트를 읽어 반환합니다 boolean readBoolean() 읽은 자료가 0이 아니면 true, 0이면 false를 반환 char readChar() 한 문자를 읽어 반환 short readShort() 2바이트를 읽어 정수 값을 반환 int readInt() 4바이트를 읽어 정수 값을 반환 long readLong() 8바이트를 읽어 정수 값을 반환 float readFloat() 4바이트를 읽어 실수 값을 반환 double readDouble() 8바이트를 읽어 실수 값을 반환 String readUTF(.. 2021. 5. 23.