Future의 단순 활용 비동기 계산을 모델링하는데 사용 Future는 계산이 끝났을 때 결과에 접근할 수 있는 참조를 제공 시간이 걸릴 수 있는 작업을 Future 내부로 설정하면 호출자 스레드가 결과를 기다리는 동안 다른 작업을 수행 Callable 객체 내부로 감싼 다음에 ExecutorService에 제출 ExecutorService executor = Executors.newCachedThreadPool();//스레드 풀 생성 Future future = executor.submit(new Callable() {//Callable을 스레드풀에 제출 public Double call() { return doSomeLongComputation();//시간이 오래걸리는 작업을 다른 스레드로 비동기 실..
스레드와 높은 수준의 추상화 단일 CPU가 여러 사용자를 지원할 수 있는데 이는 운영체제가 각 사용자에 프로세스를 할당하기 때문 두 사용자가 자신만의 공간에 있다고 생각할 수 있도록 가상 주소 공간을 각 프로세스에 제공 운영체제는 주기적으로 번갈아가며 각 프로세스에 CPU를 할당함 프로세스는 운영체제에 한개 이상의 스레드로 같은 주소 공간을 공유하는 태스크를 동시에 실행 네 개의 코어를 가진 CPU에서 이론적으로는 병렬로 실행하여 실행 속도를 네배 향상시킬 수 있음 자바 스트림으로 병렬성을 달성 long sum = Arrays.stream(stats).parallel().sum(); 스트림을 이용해 스레드 사용 패턴을 추상화 Executor와 스레드 풀 Java 5는 Executor 프레임워크와 Thre..
Executor In Java, the Executor framework provides a simple and flexible interface for asynchronous task execution. It is part of the java.util.concurrent package and is commonly used to manage and control the execution of tasks concurrently. The primary interface in the Executor framework is the Executor interface, and there are several implementations available. Basic Usage of Executor import j..
멀티스레드 환경에서 여러 스레드가 동시에 공유 자원을 점유하려고 할 때 발생. 해결 방법 : AtomicType, volatile, synchronized 사용 http://egloos.zum.com/ryukato/v/1179260 안전하게 생성자 작성하기 (Multi-threads 대비) 안전하게 생성자 작성하기 (Multi-threads 대비) (원문: Java theory and practice: Safe construction techniques)[ht egloos.zum.com
- 데이터가 많아지면 HashMap보다 binarySearch 가 더 빠르게 동작 O(logN) - HashMap은 보통 O(1)이지만 데이터가 많아져서 index가 같으면 LinkedList 사용으로 O(N) Java 8부터 Red-Black-Tree 사용하여 O(logN) index에 entity가 8개 이상일 때 LinkedList > Tree 변경 - 배열은 Arrays.binarySearch - List, Set은 Collections.binarySearch https://d2.naver.com/helloworld/831311
Arrays.sort(double[]), Arrays.sort(int[]), Arrays.sort(char[]), Arrays.sort(long[]), Arrays.sort(float[]), Arrays.sort(byte[]) : DualPivotQuicksort (JDK 7) Collections.sort(List), Collection.sort(List, Comparator), Arrays.sort(Object[]) : Collections.sort는 Arrays.sort를 호출하여 Arrays.legacyMergeSort, ComparableTimSort 사용 시간 복잡도 Timsort Introsort Merge sort Quicksort Insertion sort Selection sort Sm..