개요 김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성 강의 | 김영한 - 인프런김영한 | 멀티스레드와 동시성을 기초부터 실무 레벨까지 깊이있게 학습합니다., 국내 개발 분야 누적 수강생 1위, 제대로 만든 김영한의 실전 자바[사진][임베딩 영상]단순히 자바 문법을 안다?www.inflearn.com김영한 강사님의 강의를 듣고 정리하였다.생산자 소비자 문제는 여러 스레드가 동시에 데이터를 생산하고 소비하는 경우 발생하는 문제이다.알아보자!.본론개념생산자, Producer는 데이터를 생산하는 역할을 한다.소비자, Consumer는 데이터를 소비하는 역할을 한다.버퍼, Buffer는 생산자가 생성한 데이터를 소비자가 소비하기 전까지 임시로 저장하는 공간이다.문제만약 생산자가 너무 빠르게 데이터를 생산할..
JAVA
개요 김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성 강의 | 김영한 - 인프런김영한 | 멀티스레드와 동시성을 기초부터 실무 레벨까지 깊이있게 학습합니다., 국내 개발 분야 누적 수강생 1위, 제대로 만든 김영한의 실전 자바[사진][임베딩 영상]단순히 자바 문법을 안다?www.inflearn.com 김영한 강사님의 강의를 듣고 정리하였다.본론자바는 1.5버전 부터 Lock 인터페이스와 ReentrantLock 구현체를 제공한다.이는 LockSupport 기능을 활용하여 만들어졌다.public interface Lock { void lock(); void lockInterruptibly() throws InterruptedException; boolean tryLock(); b..
개요 김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성 강의 | 김영한 - 인프런김영한 | 멀티스레드와 동시성을 기초부터 실무 레벨까지 깊이있게 학습합니다., 국내 개발 분야 누적 수강생 1위, 제대로 만든 김영한의 실전 자바[사진][임베딩 영상]단순히 자바 문법을 안다?www.inflearn.com김영한 강사님의 강의를 듣고 정리하였다.본론synchronized 키워드를 이용한 락은 편리하게 임계 영역을 보호할 수 있지만 다음의 문제가 존재한다.임계 영역에서 락을 획득하길 기다리는 스레드들은 BLOCKED 상태에 들어가서 락을 획득할 때까지 대기한다. 이때, 타임아웃 혹은 인터럽트가 불가능하다.임계 영역에서 락을 획득할 때 스레드들은 공정하게 락을 획득하지 못하고 우리는 어떤 스레드가 락을 획득하..
개요 김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성 강의 | 김영한 - 인프런김영한 | 멀티스레드와 동시성을 기초부터 실무 레벨까지 깊이있게 학습합니다., 국내 개발 분야 누적 수강생 1위, 제대로 만든 김영한의 실전 자바[사진][임베딩 영상]단순히 자바 문법을 안다?www.inflearn.com김영한 강사님의 강의를 듣고 정리하였다.본론임계 영역이란?임계 영역(critical section)이란 여러 스레드가 동시에 접근하게 된다면 데이터의 불일치나 우리가 예상하지 못한 결과가 발생할 수 있는 위험하고 중요한 코드 부분을 뜻한다.여러 스레드들이 동시에 접근해서는 안되는 공유 자원을 접근(조회)하거나 수정하는 부분을 의미한다.출금 예제@Overridepublic boolean withdraw(i..
개요 김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성 강의 | 김영한 - 인프런김영한 | 멀티스레드와 동시성을 기초부터 실무 레벨까지 깊이있게 학습합니다., 국내 개발 분야 누적 수강생 1위, 제대로 만든 김영한의 실전 자바[사진][임베딩 영상]단순히 자바 문법을 안다?www.inflearn.com김영한 강사님의 강의를 듣고 정리하였다.본론자바에는 volatile 이라는 키워드가 존재한다.volatile은 메인 메모리에 값을 읽고쓴다는 의미이다.왜 이런 키워드가 존재하고 어디서 사용하는 것일까?문제 상황public class VolatileFlagMain{ public static void main(String[] args){ MyTask task = new..
개요 김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성 강의 | 김영한 - 인프런김영한 | 멀티스레드와 동시성을 기초부터 실무 레벨까지 깊이있게 학습합니다., 국내 개발 분야 누적 수강생 1위, 제대로 만든 김영한의 실전 자바[사진][임베딩 영상]단순히 자바 문법을 안다?www.inflearn.com김영한 강사님의 강의를 듣고 정리하였다.스레드의 작업이 바쁘지 않은 경우 다른 스레드에게 CPU를 양보하는 것이 효율적일 것이다.어떻게 하면될까?본론스레드가 CPU를 할당받아 실행하는 것은 운영체제의 스케줄러가 담당한다.하지만 스레드의 작업이 그렇게 바쁘지 않은 경우 다른 스레드가 작업을 하는 것이 효율적일 것이다.어떤 방법을 사용할 수 있을까?1. Thread.sleep(1)Thread.sleep() ..
개요 김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성 강의 | 김영한 - 인프런김영한 | 멀티스레드와 동시성을 기초부터 실무 레벨까지 깊이있게 학습합니다., 국내 개발 분야 누적 수강생 1위, 제대로 만든 김영한의 실전 자바[사진][임베딩 영상]단순히 자바 문법을 안다?www.inflearn.com김영한 강사님의 강의를 듣고 정리하였다.스레드들의 작업을 중간에 중단하려면 어떻게 해야할까?본론예제 1스레드가 Thread.sleep()을 통해 TIMED_WAITING 상태에 있는 경우, 해당 스레드를 깨워야 하는 상황이 있을 수 있다.이 경우에는 어떻게 스레드를 깨울 수 있을까?Interrupt를 사용하면 WAITING, TIMED_WAITING 같은 대기 상태의 스레드를 RUNNABLE 상태로 깨울..
개요 김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성 강의 | 김영한 - 인프런김영한 | 멀티스레드와 동시성을 기초부터 실무 레벨까지 깊이있게 학습합니다., 국내 개발 분야 누적 수강생 1위, 제대로 만든 김영한의 실전 자바[사진][임베딩 영상]단순히 자바 문법을 안다?www.inflearn.com김영한 강사님의 강의를 듣고 정리하였다.본론스레드의 상태Thread의 getState() 메서드를 사용하면 해당 스레드의 현재 상태를 확인할 수 있다.이 상태들은 Thread.State 열거형에 정의되어 있다. Thread.State (Java Platform SE 8 )Thread state for a waiting thread. A thread is in the waiting state due to ..