728x90
반응형

스트림 4

[Effective Java] 아이템 80. 스레드보다는 실행자, 태스크, 스트림을 애용하라.

🎯 아이템 80. 스레드보다는 실행자, 태스크, 스트림을 애용하라. java.util.concurrent 두둥등장 실행자 프레임워크라고 하는 인터페이스 기반의 유연한 태스크 실행 기능을 담고 있음 ExecutorService exec = Executors.newSingleThreadExecutor(); exec.execute(runnable); exec.shutdown(); 🎯 아이템 81. wait와 notify보다는 동시성 유틸리티를 애용하라. wait와 notify는 올바르게 사용하기가 아주 까다로우니 고수준 동시성 유틸리티를 사용하자! java.util.concurrent의 고수준 유틸리티의 세 범주 1️⃣ 실행자 프레임워크 2️⃣ 동시성 컬렉션 3️⃣ 동기화 장치 1) 실행자 프레임워크는 앞에서..

Java 2023.04.15

[Effective Java] 아이템 47. 반환 타입으로는 스트림보다 컬렉션이 낫다, 아이템 48. 스트림 병렬화는 주의해서 적용하라.

🎯 아이템 47. 반환 타입으로는 스트림보다 컬렉션이 낫다. 원소 시퀀스를 반호나하는 메서드를 작성할 때는, 이를 스트림으로 처리하기를 원하는 사용자와 반복으로 처리하길 원하는 사용자가 모두 있을 수 있음을 떠올리고, 양쪽을 다 만족시키려 노력하자. 컬렉션을 반환할 수 있다면 그렇게 하라. 하지만 단지 컬렉션을 반환한다는 이유로 덩치 큰 시퀀스를 메모리에 올려서는 안된다. 🎯 아이템 48. 스트림 병렬화는 주의해서 적용하라. 계산도 올바로 수행하고 성능도 빨라질 거라는 확신 없이는 스트림 파이프라인 병렬화는 시도조차 하지 말라. 주의점 데이터 소스가 Stream.iterate거나 중간 여산으로 limit를 쓰면 파이프라인 병렬화로는 성능 개선을 기대할 수 없다. 스트림의 소스가 ArrayList, Has..

Java 2023.03.23

[Effective Java] 아이템 46. 스트림에서는 부작용 없는 함수를 사용하라.

🎯 아이템 46. 스트림에서는 부작용 없는 함수를 사용하라. 스트림 파이프라인 프로그래밍의 핵심은 부작용 없는 함수 객체에 있다. 스트림뿐 아니라 스트림 관련 객체에 건네지는 모든 함수 객체가 부작용이 없어야 한다. 종단 연산 중 forEach는 스트림이 수행한 계산 결과를 보고할 때만 이용해야 한다. 계신 자체에는 이용하지 말자. 스트림을 올바로 사용하려면 수집기를 잘 알아둬야 한다. 가장 중요한 수집기 팩터리는 toList, toSet, toMap, groupingBy, joining이다. Collectors /** * Collectors */ List integerList = Stream.of(3, 5, -3, 3, 4, 5).collect(java.util.stream.Collectors.toLi..

Java 2023.03.22

[Effective Java] 아이템 45. 스트림은 주의해서 사용하라.

🎯 아이템 45. 스트림은 주의해서 사용하라. 스트림 API는 다재다능하여 사실상 어떠한 계산이라도 해낼 수 있다. 하지만 할 수 있다는 뜻이지, 해야 한다는 뜻은 아니다!! 스트림을 제대로 사용하면 프로그램이 짧고 깔금해지지만, 잘못 사용하면 읽기 어렵고 유지보수도 힘들어진다. 사전 하나를 훑어 원소 수가 많은 아나그램 그룹들을 출력한다. public class IterativeAnagrams { public static void main(String[] args) throws IOException { String[] sArr = new String[]{"abc","euq","test","zzfq","que","acb"}; int minGroupSize = Integer.parseInt("1"); Ma..

Java 2023.03.22
728x90
반응형