Java8
-
배열 Parallel 정렬백기선(인프런 강의)/더 자바, Java 8 2020. 8. 5. 08:50
Arrays.parallelSort() Fork/Join 프레임워크를 사용해서 배열을 병렬로 정렬하는 기능을 제공한다. 병렬 정렬 알고리즘 배열을 둘로 계속 쪼갠다. 합치면서 정렬한다. sort()와 parallelSort() 비교 알고리즘 효츌성은 같다. O(n logN) 공간 O(n) 단, 정렬하는 배열의 크기에따라 속도가 차이날 수 있다. 코드 import java.util.Arrays; import java.util.Random; import java.util.stream.IntStream; public class App { public static void main(@Chicken String[] args) { int size = 1500; int[] numbers = new int[size];..
-
애노테이션의 변화백기선(인프런 강의)/더 자바, Java 8 2020. 7. 24. 12:47
애노테이션의 변화 애노테이션 관련 두가지 큰 변화 자바 8부터 애노테이션을 타입 선언부에도 사용할 수 있게 됨. 자바 8부터 애노테이션을 중복해서 사용할 수 있게 됨. 타입 선언 부 제네릭 타입 변수 타입 매개변수 타입 @Target(ElementType.TYPE_PARAMETER) 예외 타입 타입에 사용할 수 있으려면 TYPE_PARAMETER: 타입 변수에만 사용할 수 있다. TYPE_USE: 타입 변수를 포함해서 모든 타입 선언부에 사용할 수 있다. public enum ElementType { /** Class, interface (including annotation type), or enum declaration */ TYPE, /** Field declaration (includes enum..
-
CompletableFuture 2백기선(인프런 강의)/더 자바, Java 8 2020. 7. 23. 08:35
조합하기 thenCompose() 두 작업이 서로 이어서 실행하도록 조합 두 작업이 연관관계가 있을 때 public class App { public static void main(String[] args) throws InterruptedException, ExecutionException { CompletableFuture hello = CompletableFuture.supplyAsync(() -> { System.out.println("Hello " + Thread.currentThread().getName()); return "Hello"; }); CompletableFuture future = hello.thenCompose(s -> getWorld("안녕하세요")); System.out.pr..
-
Callable과 Future백기선(인프런 강의)/더 자바, Java 8 2020. 7. 20. 13:04
Callable Runnable과 유사하지만 작업의 결과를 받을 수 있다. Future 비동기적인 작업의 현재 상태를 조회하거나 결과를 가져올 수 있다. https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/Future.html get() - 결과를 가져오기 블록킹 콜 결과를 가져올때까지 기다린다. 타임아웃(최대한으로 기다릴 시간)을 설정 가능 public class App { public static void main(String[] args) throws InterruptedException, ExecutionException { ExecutorService executorService = Executors.newSingleThreadExec..
-
Executors백기선(인프런 강의)/더 자바, Java 8 2020. 7. 16. 13:08
고수준 (High-Level) Concurrency 프로그래밍 쓰레드를 만들고 관리하는 작업을 애플리케이션에서 분리. 그런 기능을 Executors에게 위임. Executors가 하는 일 쓰레드 만들기: 애플리케이션이 사용할 쓰레드 풀을 만들어 관리한다. 쓰레드 관리: 쓰레드 생명 주기를 관리한다. 작업 처리 및 실행: 쓰레드로 실행할 작업을 제공할 수 있는 API를 제공한다. 주요 인터페이스 Executor execute(Runnable) ExecutorService Executor 상속 받은 인터페이스로, Callable도 실행할 수 있으며, Executor를 종료 시키거나, 여러 Callable을 동시에 실행하는 등의 기능을 제공한다. ScheduledExecutorService ExecutorSe..
-
자바 Concurrent 프로그래밍 소개백기선(인프런 강의)/더 자바, Java 8 2020. 7. 16. 00:00
Concurrent 소프트웨어 동시에 여러 작업을 할 수 있는 소프트웨어 예) 웹 브라우저로 유튜브를 보면서 키보드로 문서에 타이핑을 할 수 있다. 예) 녹화를 하면서 인텔리J로 코딩을 하고 워드에 적어둔 문서를 보거나 수정할 수 있다. 자바에서 지원하는 컨커런트 프로그래밍 멀티프로세싱 (ProcessBuilder) 멀티쓰레드 자바 멀티쓰레드 프로그래밍 Thread / Runnable Thread 상속 public class App { public static void main(String[] args) { HelloThread helloThread = new HelloThread(); helloThread.start(); System.out.println("hello : " + Thread.curren..
-
Optional API백기선(인프런 강의)/더 자바, Java 8 2020. 7. 12. 13:13
Optional 만들기 Optional.of() Optional.ofNullable() Optional.empty() Optional에 값이 있는지 없는지 확인하기 isPresent() isEmpty() (Java 11부터 제공) Optional에 있는 값 가져오기 get() 만약에 비어있는 Optional에서 무언가를 꺼낸다면? NoSuchElementException이 발생 Optional에 값이 있는 경우에 그 값을 가지고 ~~를 하라. ifPresent(Consumer) 예) Spring으로 시작하는 수업이 있으면 id를 출력하라. Optional에 값이 있으면 가져오고 없는 경우에 ~~를 리턴하라. orElse(T) 무조건 호출이 된다. 예) JPA로 시작하는 수업이 없다면 비어있는 수업을 리턴..
-
Optional 소개백기선(인프런 강의)/더 자바, Java 8 2020. 7. 11. 18:46
자바 프로그래밍에서 NullPointerException을 종종 보게 되는 이유 null을 리턴하니까! && null 체크를 깜빡했으니까! 메소드에서 작업 중 특별한 상황에서 값을 제대로 리턴할 수 없는 경우 선택할 수 있는 방법 예외를 던진다. (비싸다, 스택트레이스를 찍어두니까.) null을 리턴한다. (비용 문제가 없지만 그 코드를 사용하는 클리어인트 코드가 주의해야 한다.) (자바 8부터) Optional을 리턴한다. (클라이언트에 코드에게 명시적으로 빈 값일 수도 있다는 걸 알려주고, 빈 값인 경우에 대한 처리를 강제한다.) Optional 오직 값 한 개가 들어있을 수도 없을 수도 있는 컨네이너. 주의할 것 리턴값으로만 쓰기를 권장한다. (메소드 매개변수 타입, 맵의 키 타입, 인스턴스 필드 ..