자바/자바8
-
스트림자바/자바8 2022. 5. 1. 18:28
스트림이란 무엇인가? 자바8 API에 새로 추가된 기능이다. 선언형(질의)으로 컬렉션 데이터를 처리할 수 있다. 컬렉션 반복을 간결하게 처리하는 기능. 멀티스레드 코드를 구현하지 않아도 데이터를 투명하게 병렬로 처리할 수 있다. 선언형으로 코드를 구현할 수 있다는 뜻은 if조건문 등의 제어 블록을 사용해서 어떻게 동작을 구현할지 지정할 필요 없이 저칼로리의 요리만 선택하라 같은 동작의 수행을 지정할 수 있다. filter, sorted, map, collect 같은 여러 빌딩 블록 연산을 연결해서 복잡한 데이터 처리 파이프라인을 만들 수 있다. 여러 연산을 파이프라인으로 연결해도 여전히 가독성과 명확성이 유지된다. 자바8의 스트림 API의 특징 선언형: 더 간결하고 가독성이 좋아진다. 조립: 유연성이 좋..
-
2. 자바에서 제공하는 함수형 인터페이스자바/자바8 2022. 3. 18. 10:15
1. 자주 사용하는 함수형 인터페이스(functional interface) - 아래 메소드는 오라클 자바8에서 사용법을 찾아 직접 사용해보기를 권장합니다. - 함수형 인터페이스는 매개변수와 리턴 타입을 지정 한다/안한다, 매개변수가 있다/없다, 리턴이 있다/없다로 다양하게 있습니다. - Function: T 타입으로 매개변수를 받아서 R 타입으로 리턴하는 함수 인터페이스. - BiFunction: 두 개의 값(T, U)를 받아서 R 타입을 리턴하는 함수 인터페이스. - Consumer: T 타입을 받아서 아무값도 리턴하지 않는 함수 인터페이스. - Supplier: 매개변수 없이 정해진 값을 리턴하는 함수 인터페이스. - Predicate: T 타입을 받아서 boolean을 리턴하는 함수 인터페이스. ..
-
Callable과 Future자바/자바8 2022. 3. 17. 05:54
Callable - Runnable과 유사하지만 작업의 결과를 받을 수 있다. Future - 비동기적인 작업의 현재 상태를 조회하거나 결과를 가져올 수 있다. Callable을 사용한 작업 - 작업상태 확인하기: future.isDone() - 작업 취소하기: future.cancel() - 여러 작업 동시에 실행하기: executorService.invokeAll(Arrays.asList(hello, hello2, hello3)); - 여러 작업 중에 하나라도 먼저 응답이 오면 끝내기: executorService.invokeAny(Arrays.asList(hello, hello2, hello3)); long start = System.currentTimeMillis(); ExecutorService..
-
Executor자바/자바8 2022. 3. 17. 05:27
Thread의 장점 - 동시성 - 메모리를 공유하여 절약 Thread를 사용하는 방법 - Thread 클래스를 상속받아서 사용 - Runnable 함수형 인터페이스를 구현해서 사용 class MyThread extends Thread { @Override public void run() { System.out.println("MyThread Name: "+Thread.currentThread().getName()); } } Thread thread = new Thread(new Runnable() { @Override public void run() { System.out.println("Runnable Thread: "+Thread.currentThread().getName()); } }); Threa..
-
1. 함수형 인터페이스와 람다 표현식 소개자바/자바8 2022. 3. 11. 19:28
1. 함수형 인터페이스 - 추상 메소드가 하나만 있으면 함수형 인터페이스. - FunctionalInterface 어노테이션을 가지고 있는 인터페이스. - 자바8에서 abstract, public 예약어 생략 가능. - 자바8의 함수형 인터페이스에서 static, default 메소드 구현이 가능하다. @FunctionalInterface public interface RunSomething { //추상 메소드 void doIt(); static void printName(){ System.out.println("static"); } default void printAge(){ System.out.println("default"); } } 2. 익명 내부클래스 사용 - 외부 변수를 사용하지 않도록 주의...
-
0. 자바8 학습의 필요성자바/자바8 2022. 3. 11. 18:40
1. WHY? 5년을 자바 웹 개발자로 일했습니다. ktds university에서 실무 교육을 받고 쉽게 취업해서 일을 시작했는데 개발하는 것보다 업무를 파악하는 게 너무 힘들었습니다. 퇴근하면 일 관련해서는 생각하고 싶지 않았고 헬스장에서 운동하는 것을 사랑했던 것 같습니다. 업무 좀 파악하니까 일하는 게 거기서 거기인 것 같고 개발 기술에 관심 없었고요. 근데 이직하려고 면접 몇 번 보니까... 엄청 혼났습니다. 면접관: 스프링 배치를 많이 개발해보신 것 같은데... tasklets, chunk 같은 개념을 모르신다는 게 이해가 안되네요. 자존심이 많이 상했습니다. 직장에서 업무는 과중되고 일은 나혼자 다 하는것 같은데 이런 거 면접 때 도움 하나도 안된다는 생각에 좌절했습니다. 홧김에 책 사고 인..