<Lambda> 1. JAVA8 in Action - Chapter 1
by BFine반응형
Chapter 1 - JAVA8 이란
1.1.1 JAVA8 특징
-
JAVA8에서 간단한 병렬처리 를 제공한다.
기존에는 CPU 코어를 멀티로 활용하려면 Thread 객체 이용했지만 관리가 어렵다는 단점이 있다.
함수형 프로그래밍을 위한 스트림 API 가 추가 되었다.
-
메서드를 다른 메서드의 인수로 넘겨주는 기능이 추가되었다.(동작의 파라미터화)
메서드를 다른 메서드로 전달할 방법이 없어서 객체를 만들어서 넘기는 복잡한 방법이 있었다.
인터페이스의 디폴트 메서드 를 이용해서 함수를 구현 할 수 있다.
1.1.2 스트림 처리
- 스트림이란 한번에 한개씩 만들어지는 연속적인 데이터틀 이다.
- 기존에 한번에 한항목을 처리하던 것을 스트림으로 만들어서 처리 할 수 있다.
- 스트림 파이프라인을 활용하면 여러 cpu 코어에 쉽게 할당(병렬) 할 수 있다.
1.2.1 메서드와 람다
- 메서드를 값으로 전달하는 메서드 레퍼런스 기능이 추가 되었다.
- 메서드 레퍼런스 연산자는
::
으로 객체 안에 포함된 메서드를 참조하라는 표현이다. - 인터페이스를 활용하여 함수도 값으로 취급 할 수 있다.
1.3.1 스트림과 컬렉션
컬렉션은 반복과정을 직접 처리하는 외부반복 , 스트림은 라이브러리 내부에서 처리되는 내부반복 방식이다.
-
멀티코어 활용의 어려움을 스트림 API로 해결했다.
=> 멀티스레딩 환겨에서 각각의 스레드느 동시에 공유된 데이터에 접근, 갱신할 수 있기 때문에 스레드를 잘 제어하지 못하면 데이터 상에 오류가 발생할 수 있다.
스트림 API는 데이터들을 필터링, 추출, 그룹화 하는 것이 가능하다.
컬력션은 데이터를 저장,접근에 중점을 두고 스트림은 데이터에 어떤 계산을 할 것인지에 중점을 둔다.
-
스트림 병렬처리는 라이브러리에서 큰 스트림을 병렬로 처리할 수 있게 작은 스트림으로 분할시킨다.
NOTE : 여러 CPU로 데이터를 나눠서 처리하는 것을 포킹이라 한다.
1.4 디폴트 메서드
- JAVA8은 구현하지 않아도 되는 메서드를 인터페이스가 포함할 수 있는 기능을 제공한다.
- 디폴트 메서드를 포함한 여러 인터페이스를 활용하면 다중상속과 비슷한 기능을 사용할 수 있다.
출처
- Java8 in Action
반응형
'개발서적 > 자바8 인 액션' 카테고리의 다른 글
<Lambda> 6. JAVA8 in Action - Chapter 6 (0) | 2019.04.02 |
---|---|
<Lambda> 5. JAVA8 in Action - Chapter 5 (0) | 2019.04.01 |
<Lambda> 4. JAVA8 in Action - Chapter 4 (0) | 2019.04.01 |
<Lambda> 3. JAVA8 in Action - Chapter 3 (0) | 2019.03.27 |
<Lambda> 2. JAVA8 in Action - Chapter 2 (0) | 2019.03.26 |
블로그의 정보
57개월 BackEnd
BFine