동기화란스레드 개념의 도입으로 하나의 프로세스에서 여러 스레드들이 동시에 작업을 처리할 수 있게 되었지만, 스레드들이 프로세스의 자원을 공유하며 Race Condition이나 데이터 불일치와 같은 동시성 문제들이 발생하게 되었다.여러 스레드가 접근할 때 동시성 문제가 발생할 수 있는 공유 자원을 임계 영역이라 하며, 동시성 문제가 발생하지 않으려면 임계 영역에 하나의 스레드만 접근할 수 있도록 해야한다. 스레드 간의 수행 시기를 맞추어 동시성 문제를 예방하는 것을 동기화라고 하며,자바에서도 멀티 스레드 상황에서 동시성 문제를 해결할 수 있는 여러 동기화 방법들을 제공한다. synchronized의 단점synchronized는 자바에서 동기화를 위한 가장 대표적인 키워드이다.자바에서 모든 객체는 모니터 ..
자바 스레드 생명 주기자바 스레드의 생명 주기는 시작부터 시작하여 실행, 일시 중지, 종료의 상태를 갖고 있다. 1. New - 스레드가 생성되고 아직 시작되지 않은 상태2. Runnable - 실행될 준비가 됐거나, 실제로 실행 중인 상태3. Blocked - 동기화 락을 기다리는 상태, synchronized에서만 사용하는 특별한 스레드 대기 상태4. Waiting - 다른 스레드의 작업이 완료되기를 무기한 기다리는 상태5. Timed Waiting - 스레드가 일정 시간 동안 대기하는 상태6. Terminated - 스레드의 실행이 완료된 상태 join - 다른 스레드의 작업 대기class SumTask implements Runnable { int startValue; int endV..
개요Stream은 중간 연산을 거친 데이터들을 collect 최종 연산을 통해 다양한 컬렉션으로 반환할 수 있다. 구조public interface Stream extends BaseStream> { .. //Collector 인터페이스를 통해 최종 연산 반환 타입 지정 R collect(Collector collector); ..}collect 연산은 Collector 인터페이스을 매개변수로 받아서 알맞은 컬렉션 형태로 반환한다. 자바에서 Collectors 클래스를 통해 Collector 인터페이스의 대부분 기능을 구현해 놓았다. Collectors 클래스에서 어떤 기능들로 어떤 타입들을 반환하는지 알아보자. List 반환//수정 가능List list = Stream...