스레드 「Java 언어로 배우는 디자인 패턴 (멀티 스레드 편)」정리 (그 12) - 반드시 종료 처리를 실시하는 것(생존성) - 종료 처리를 내면 가능한 한 빨리 종료 처리에 들어가는 것(응답성) Main.java CountupThread.java TerminationRequester 역할은 Terminator 역할에 종료 요청을 발행합니다. 샘플 프로그램에서는 Main 클래스가 이 역할을 맡았다. Terminator 역할 Terminator 역할은 종료 요청을 받고 실... 디자인 패턴스레드자바책 「Java 언어로 배우는 디자인 패턴 (멀티 스레드 편)」정리 (그 11) 이 때의 교환권을 Future 역이라고 부른다. 교환권을 받은 스레드는 나중에 Future 역을 사용하여 실행 결과를 받으러 간다. 만약 실행 결과가 되어 있으면, 곧바로 그것을 받고, 완성되어 있지 않으면 가능한 때까지 기다리게 된다. Host.java Future.java 이 인스턴스가 반환값이 된다. 다음으로 새로운 thread를 기동해, 그 안에서 RealData 의 인스턴스를 만든다... 디자인 패턴스레드자바책 「Java 언어로 배우는 디자인 패턴 (멀티 스레드 편)」정리 (그 9) 어떠한 명령이나 요구마다 새롭게 하나의 thread가 할당되어 그 thread가 처리를 실시한다. 이것이 Thread-Per-Message 패턴. 다음과 같은 예를 생각한다. Main 클래스가 Host 클래스에 문자를 표시하도록 요청합니다. Host 클래스는 그 요구를 처리하는 thread를 생성해 기동한다. 기동된 thread는 Helper 클래스를 사용해 실제의 표시를 실시한다. (코드 ... 디자인 패턴스레드자바책 「Java 언어로 배우는 디자인 패턴 (멀티 스레드 편)」정리 (그 8) 읽기 스레드: 여러 스레드가 동시에 읽을 수 있습니다. 쓰기 스레드: 한 스레드가 쓰는 동안 다른 스레드는 읽거나 쓸 수 없습니다. 스레드가 읽기를 위한 잠금을 확보하려고 할 때, 1. 쓰는 스레드가 이미 존재하면 기다립니다. 2. 읽고 있는 스레드가 이미 존재해도 기다리지 않는다. 스레드가 쓰기를위한 잠금을 확보하려고 할 때, 1. 쓰는 스레드가 이미 존재하면 기다립니다. 2. 읽고 있는 ... 디자인 패턴스레드자바책 「Java 언어로 배우는 디자인 패턴 (멀티 스레드 편)」정리 (그 7) producer(생산자)는 데이터를 작성하는 스레드, consumer(소비자)는 데이터를 이용하는 스레드. 생산자와 소비자가 서로 다른 스레드로 움직일 때, 양자의 처리 속도의 어긋남이 문제가 된다. Producer-Consumer 패턴에서는, 생산자와 소비자의 사이에 「교도역」이 들어간다. 생산자와 소비자 모두가 단수인 경우 파이프 패턴이라고 할 수 있습니다. 3명의 수탉이 케이크를 만들어... 디자인 패턴스레드자바책 「Java 언어로 배우는 디자인 패턴 (멀티 스레드 편)」정리 (그 6) balk란, 그만두고 돌아가는 것. 야구의 보크도 balk. Balking 패턴에도 Guarded Suspension 패턴과 마찬가지로 가드 조건이 등장한다. Balking 패턴에서는 가드 조건이 충족되지 않으면 즉시 중단한다. 이것이 실행 가능한 상태가 될 때까지 기다리는 Guarded Suspension 패턴과의 차이. 에디터의 자동 저장 기능 같은 것을 생각한다. 현재의 데이터의 내용을... 디자인 패턴스레드자바책 「Java 언어로 배우는 디자인 패턴 (멀티 스레드 편)」정리 (그 5) Guarded Suspension 패턴에는 guarded wait, spin lock등의 호칭이 있다. Request.java RequestQueue.java ClientThread.java ServerThread.java Main.java 실행 결과 ClientThread는 SeverThread에 Request 인스턴스를 전달합니다. 이것은 매우 간단한 스레드 간 통신. ClientThre... 디자인 패턴스레드자바책 「Java 언어로 배우는 디자인 패턴 (멀티 스레드 편)」정리 (그 4) String 클래스에는, 캐릭터 라인의 내용을 변경하는 메소드가 준비되어 있지 않다. String의 인스턴스가 나타내고 있는 캐릭터 라인의 내용은 결코 변화하지 않는다. 이것으로부터 String 클래스의 메소드는, synchronized로 할 필요가 없다. Immutable 패턴에는, 인스턴스의 상태가 변하지 않는 것이 보증되고 있는 클래스(immutable인 클래스)가 등장한다. 배타 제어... 디자인 패턴스레드자바책 「Java 언어로 배우는 디자인 패턴 (멀티 스레드 편)」정리 (그 2) 안전성이란, 오브젝트를 파괴하지 않는 것. 깨진 것은 종종 객체의 필드가 예기치 않은 값을 취하는 것에 해당합니다. 예를 들어, 은행 계좌의 예금 잔액이 마이너스가 되었다고 하면, 은행 계좌를 나타내는 오브젝트가 망가졌다. 복수의 thread가 이용해도 안전성이 유지되는 클래스를 thread 세이프인 클래스라고 부른다. 생존성이란, 필요한 처리는 하나인가 반드시 행해지는 것. 안전성과 생존성... 디자인 패턴스레드자바책 [OS] Threads & Concurrency 하지만 프로세스가 다수의 제어 스레드(다중 스레드)를 가진다면, 프로세스는 동시에 하나 이상의 작업을 수행할 수 있다. 이러한 어플리케이션을 다중 스레드를 이용한다고 하며, 다중 코어 시스템에서 여러 개의 코어를 사용하여 작업을 병렬적으로 수행하여 처리능력을 향상 시킬 수 있다. 아래에서 사용자 레벨 스레드와 커널 레벨 스레드를 알아보고 두 스레드 간의 매핑 관계를 아래 모델들로 확인할 수 ... OperatingSystem병행성스레드concurrencyThreadOperatingSystem 방학 불태우기 9 프로세스를 관리하기 위해 ready queue와 waiting queue가 존재하며 ready queue의 프로세스들 중 실행되는 프로세스는 running 상태가 되어 실행되게 된다. 이런 불필요한 CPU 낭비를 막기 위해 context switching 을 통해 여러 task를 번갈아 시행하며 CPU가 노는 시간을 최대한 줄일 수 있다. 이 때 스레드를 사용한다면 기존의 힙과 데이터 영역 ... 스케줄링동기화임계구역프로세스타이머스레드동기화 [PINTOS_PROJECT1] THREAD1 1. thread 구조체 2. thread_start() 3. thread_create() 4. init_thread() 5. thread_unblock() 6. thread_yield() 7. do_schedule() 8. schedule() 9. thread_launch();... project#1핀토스OSThread스레드OS 자바 I/O & NIO 네트워크 정리 2: 스레드 이처럼 프로세스에서도 멀티 쓰레드를 사용할수 있다. 1. 프로세스 : 자신의 주소공간을 갖는 독립적인 실행 프로그램 2. 스레드 : 프로세스 내의 독립적인 순차흐름 또는 제어 특히 자바는 언어적 차원에서 스레드를 지원하는 일반적인 언어중 하나로, JVM자체가 하나의 프로세스이기 때문에 멀티스레트 프로그램을 쉽고 명료하게 만들수 있다. Thread 클래스를 상속한뒤 run메소드를 오버라이드 한... 스레드자바 I/O & NIO스레드 [면접 대비] 운영체제 하나의 응용 프로그램(프로세스)에서 여러 스레드를 구성해 각 스레드가 하나의 작업을 처리하는 것 파이프는 두 개의 프로세스를 연결하는데, 하나의 프로세스는 데이터를 쓰기만하고, 다른 하나는 데이터를 읽기만 할 수 있다. 사용할 데이터에 번호를 붙이면서 여러 프로세스가 동시에 데이터를 쉽게 다룰 수 있다. 프로세스의 메모리 영역은 독립적으로 가지며 다른 프로세스가 접근하지 못하도록 반드시 보호... 스레드프로세스동기화동기화 <TIL> java_Thread 이때 스레드 실행 특징은 스케줄된 여러개의 스레드가 순서대로 빠르게 실행되어 동시에 진행되는 것처럼 하는 것이 아니라 랜덤으로 한개의 스레드를 실행하고 실행 중간에도 다른 스레드고 가서 실행시키고 또 랜던하게 이동하여 또 다른 스레드를 실행시켜 멀티태스킹을 실현한다. 개발자의 스레드 코드를 만들 수 있게 요소를 담은 클래스 스레드 생성 run 메서드를 오버라이딩하지 않으면 Thread 클래스... 멀티태스킹동기화비동기화JavaThreadTIL스레드멀티스레드Java
「Java 언어로 배우는 디자인 패턴 (멀티 스레드 편)」정리 (그 12) - 반드시 종료 처리를 실시하는 것(생존성) - 종료 처리를 내면 가능한 한 빨리 종료 처리에 들어가는 것(응답성) Main.java CountupThread.java TerminationRequester 역할은 Terminator 역할에 종료 요청을 발행합니다. 샘플 프로그램에서는 Main 클래스가 이 역할을 맡았다. Terminator 역할 Terminator 역할은 종료 요청을 받고 실... 디자인 패턴스레드자바책 「Java 언어로 배우는 디자인 패턴 (멀티 스레드 편)」정리 (그 11) 이 때의 교환권을 Future 역이라고 부른다. 교환권을 받은 스레드는 나중에 Future 역을 사용하여 실행 결과를 받으러 간다. 만약 실행 결과가 되어 있으면, 곧바로 그것을 받고, 완성되어 있지 않으면 가능한 때까지 기다리게 된다. Host.java Future.java 이 인스턴스가 반환값이 된다. 다음으로 새로운 thread를 기동해, 그 안에서 RealData 의 인스턴스를 만든다... 디자인 패턴스레드자바책 「Java 언어로 배우는 디자인 패턴 (멀티 스레드 편)」정리 (그 9) 어떠한 명령이나 요구마다 새롭게 하나의 thread가 할당되어 그 thread가 처리를 실시한다. 이것이 Thread-Per-Message 패턴. 다음과 같은 예를 생각한다. Main 클래스가 Host 클래스에 문자를 표시하도록 요청합니다. Host 클래스는 그 요구를 처리하는 thread를 생성해 기동한다. 기동된 thread는 Helper 클래스를 사용해 실제의 표시를 실시한다. (코드 ... 디자인 패턴스레드자바책 「Java 언어로 배우는 디자인 패턴 (멀티 스레드 편)」정리 (그 8) 읽기 스레드: 여러 스레드가 동시에 읽을 수 있습니다. 쓰기 스레드: 한 스레드가 쓰는 동안 다른 스레드는 읽거나 쓸 수 없습니다. 스레드가 읽기를 위한 잠금을 확보하려고 할 때, 1. 쓰는 스레드가 이미 존재하면 기다립니다. 2. 읽고 있는 스레드가 이미 존재해도 기다리지 않는다. 스레드가 쓰기를위한 잠금을 확보하려고 할 때, 1. 쓰는 스레드가 이미 존재하면 기다립니다. 2. 읽고 있는 ... 디자인 패턴스레드자바책 「Java 언어로 배우는 디자인 패턴 (멀티 스레드 편)」정리 (그 7) producer(생산자)는 데이터를 작성하는 스레드, consumer(소비자)는 데이터를 이용하는 스레드. 생산자와 소비자가 서로 다른 스레드로 움직일 때, 양자의 처리 속도의 어긋남이 문제가 된다. Producer-Consumer 패턴에서는, 생산자와 소비자의 사이에 「교도역」이 들어간다. 생산자와 소비자 모두가 단수인 경우 파이프 패턴이라고 할 수 있습니다. 3명의 수탉이 케이크를 만들어... 디자인 패턴스레드자바책 「Java 언어로 배우는 디자인 패턴 (멀티 스레드 편)」정리 (그 6) balk란, 그만두고 돌아가는 것. 야구의 보크도 balk. Balking 패턴에도 Guarded Suspension 패턴과 마찬가지로 가드 조건이 등장한다. Balking 패턴에서는 가드 조건이 충족되지 않으면 즉시 중단한다. 이것이 실행 가능한 상태가 될 때까지 기다리는 Guarded Suspension 패턴과의 차이. 에디터의 자동 저장 기능 같은 것을 생각한다. 현재의 데이터의 내용을... 디자인 패턴스레드자바책 「Java 언어로 배우는 디자인 패턴 (멀티 스레드 편)」정리 (그 5) Guarded Suspension 패턴에는 guarded wait, spin lock등의 호칭이 있다. Request.java RequestQueue.java ClientThread.java ServerThread.java Main.java 실행 결과 ClientThread는 SeverThread에 Request 인스턴스를 전달합니다. 이것은 매우 간단한 스레드 간 통신. ClientThre... 디자인 패턴스레드자바책 「Java 언어로 배우는 디자인 패턴 (멀티 스레드 편)」정리 (그 4) String 클래스에는, 캐릭터 라인의 내용을 변경하는 메소드가 준비되어 있지 않다. String의 인스턴스가 나타내고 있는 캐릭터 라인의 내용은 결코 변화하지 않는다. 이것으로부터 String 클래스의 메소드는, synchronized로 할 필요가 없다. Immutable 패턴에는, 인스턴스의 상태가 변하지 않는 것이 보증되고 있는 클래스(immutable인 클래스)가 등장한다. 배타 제어... 디자인 패턴스레드자바책 「Java 언어로 배우는 디자인 패턴 (멀티 스레드 편)」정리 (그 2) 안전성이란, 오브젝트를 파괴하지 않는 것. 깨진 것은 종종 객체의 필드가 예기치 않은 값을 취하는 것에 해당합니다. 예를 들어, 은행 계좌의 예금 잔액이 마이너스가 되었다고 하면, 은행 계좌를 나타내는 오브젝트가 망가졌다. 복수의 thread가 이용해도 안전성이 유지되는 클래스를 thread 세이프인 클래스라고 부른다. 생존성이란, 필요한 처리는 하나인가 반드시 행해지는 것. 안전성과 생존성... 디자인 패턴스레드자바책 [OS] Threads & Concurrency 하지만 프로세스가 다수의 제어 스레드(다중 스레드)를 가진다면, 프로세스는 동시에 하나 이상의 작업을 수행할 수 있다. 이러한 어플리케이션을 다중 스레드를 이용한다고 하며, 다중 코어 시스템에서 여러 개의 코어를 사용하여 작업을 병렬적으로 수행하여 처리능력을 향상 시킬 수 있다. 아래에서 사용자 레벨 스레드와 커널 레벨 스레드를 알아보고 두 스레드 간의 매핑 관계를 아래 모델들로 확인할 수 ... OperatingSystem병행성스레드concurrencyThreadOperatingSystem 방학 불태우기 9 프로세스를 관리하기 위해 ready queue와 waiting queue가 존재하며 ready queue의 프로세스들 중 실행되는 프로세스는 running 상태가 되어 실행되게 된다. 이런 불필요한 CPU 낭비를 막기 위해 context switching 을 통해 여러 task를 번갈아 시행하며 CPU가 노는 시간을 최대한 줄일 수 있다. 이 때 스레드를 사용한다면 기존의 힙과 데이터 영역 ... 스케줄링동기화임계구역프로세스타이머스레드동기화 [PINTOS_PROJECT1] THREAD1 1. thread 구조체 2. thread_start() 3. thread_create() 4. init_thread() 5. thread_unblock() 6. thread_yield() 7. do_schedule() 8. schedule() 9. thread_launch();... project#1핀토스OSThread스레드OS 자바 I/O & NIO 네트워크 정리 2: 스레드 이처럼 프로세스에서도 멀티 쓰레드를 사용할수 있다. 1. 프로세스 : 자신의 주소공간을 갖는 독립적인 실행 프로그램 2. 스레드 : 프로세스 내의 독립적인 순차흐름 또는 제어 특히 자바는 언어적 차원에서 스레드를 지원하는 일반적인 언어중 하나로, JVM자체가 하나의 프로세스이기 때문에 멀티스레트 프로그램을 쉽고 명료하게 만들수 있다. Thread 클래스를 상속한뒤 run메소드를 오버라이드 한... 스레드자바 I/O & NIO스레드 [면접 대비] 운영체제 하나의 응용 프로그램(프로세스)에서 여러 스레드를 구성해 각 스레드가 하나의 작업을 처리하는 것 파이프는 두 개의 프로세스를 연결하는데, 하나의 프로세스는 데이터를 쓰기만하고, 다른 하나는 데이터를 읽기만 할 수 있다. 사용할 데이터에 번호를 붙이면서 여러 프로세스가 동시에 데이터를 쉽게 다룰 수 있다. 프로세스의 메모리 영역은 독립적으로 가지며 다른 프로세스가 접근하지 못하도록 반드시 보호... 스레드프로세스동기화동기화 <TIL> java_Thread 이때 스레드 실행 특징은 스케줄된 여러개의 스레드가 순서대로 빠르게 실행되어 동시에 진행되는 것처럼 하는 것이 아니라 랜덤으로 한개의 스레드를 실행하고 실행 중간에도 다른 스레드고 가서 실행시키고 또 랜던하게 이동하여 또 다른 스레드를 실행시켜 멀티태스킹을 실현한다. 개발자의 스레드 코드를 만들 수 있게 요소를 담은 클래스 스레드 생성 run 메서드를 오버라이딩하지 않으면 Thread 클래스... 멀티태스킹동기화비동기화JavaThreadTIL스레드멀티스레드Java