-
day32 - JAVA (자바, 스트림 예제, 멀티 스레드)KIC/JAVA 2021. 7. 28. 11:35반응형
[Collectors 예제]
package javaPro.java_Stream; import java.util.List; import java.util.Map; import java.util.stream.Stream; import java.util.stream.Collectors; class CollectEx2 { public static void main(String[] args) { Student2[] stuArr = { new Student2("나자바", true, 1, 1, 300), new Student2("김지미", false, 1, 1, 250), new Student2("김자바", true, 1, 1, 200), new Student2("이지미", false, 1, 2, 150), new Student2("남자바", true, 1, 2, 100), new Student2("안지미", false, 1, 2, 50), new Student2("황지미", false, 1, 3, 100), new Student2("강지미", false, 1, 3, 150), new Student2("이자바", true, 1, 3, 200), new Student2("나자바", true, 2, 1, 300), new Student2("김지미", false, 2, 1, 250), new Student2("김자바", true, 2, 1, 200), new Student2("이지미", false, 2, 2, 150), new Student2("남자바", true, 2, 2, 100), new Student2("안지미", false, 2, 2, 50), new Student2("황지미", false, 2, 3, 100), new Student2("강지미", false, 2, 3, 150), new Student2("이자바", true, 2, 3, 200) }; Map<Boolean, List<Student2>> stu = Stream.of(stuArr).collect(Collectors.partitioningBy(Student2::isMale)); } }
[Collectors 예제2]
package javaPro.java_Stream; //import java.lang.System.Logger.Level; import java.util.List; import java.util.Map; import java.util.stream.Stream; import java.util.stream.Collector; import java.util.stream.Collectors; class CollectEx3 { public static void main(String[] args) { Student2[] stuArr = { new Student2("나자바", true, 1, 1, 300), new Student2("김지미", false, 1, 1, 250), new Student2("김자바", true, 1, 1, 200), new Student2("이지미", false, 1, 2, 150), new Student2("남자바", true, 1, 2, 100), new Student2("안지미", false, 1, 2, 50), new Student2("황지미", false, 1, 3, 100), new Student2("강지미", false, 1, 3, 150), new Student2("이자바", true, 1, 3, 200), new Student2("나자바", true, 2, 1, 300), new Student2("김지미", false, 2, 1, 250), new Student2("김자바", true, 2, 1, 200), new Student2("이지미", false, 2, 2, 150), new Student2("남자바", true, 2, 2, 100), new Student2("안지미", false, 2, 2, 50), new Student2("황지미", false, 2, 3, 100), new Student2("강지미", false, 2, 3, 150), new Student2("이자바", true, 2, 3, 200) }; Map<Integer, List<Student2>> stuBan = Stream.of(stuArr).collect(Collectors.groupingBy(Student2::getBan)); for (Integer it : stuBan.keySet()) { System.out.println(it + "반"); for (Student2 s : stuBan.get(it)) { System.out.println(s); } } Map<Student2.Level, List<Student2>> stuLevel = Stream.of(stuArr).collect(Collectors.groupingBy(s -> { if (s.getScore() >= 200) return Student2.Level.HIGH; else if (s.getScore() >= 100) return Student2.Level.HIGH; else return Student2.Level.HIGH; })); for (javaPro.java_Stream.Student2.Level it : stuLevel.keySet()) { for (Student2 s : stuLevel.get(it)) { System.out.println(s); } } } // main의 끝 }
[프로세스]
-> 실행중인 하나의 프로그램
-> 하나의 프로그램이 다중 프로세스를 만들기도 한다.
[멀티 태스킹]
-> 두가지 이상의 작업을 동시에 처리하는 것
-> 멀티 프로세스
-> 독립적으로 프로그램들을 실행하고 여러 가지 작업을 처리한다.
[멀티 스레드]
-> 한 개의 프로그램을 실행하고 내부적으로 여러가지 작업을 처리하는 것
[메인 스레드]
-> 모든 자바 프로그램은 메인 스레드가 main() 메소드를 실행하며 시작한다.
-> main() 메소드의 첫 코드부터 아래로 순차적으로 실행
-> 실행 종료 조건은 마지막 코드를 실행하거나 return 문을 만났을때.
-> main 스레드는 작업 스레드들을 만들어서 병렬로 코드들을 실행한다.
-> 멀티 스레드를 생성해 멀티 태스킹을 수행한다.
-> 프로세스의 종료
-> 싱글 스레드: 메인 스레드가 종료하면 프로세스도 종료한다.
-> 멀티 스레드: 실행 중인 스레드가 하나라도 있다면, 프로세스가 종료되지 않는다.
[멀티 스레드로 실행하는 어플리케이션 개발]
-> 몇 개의 작업을 병렬로 실행 할지 결정하는 것이 선행
[스레드의 이름]
300x250'KIC > JAVA' 카테고리의 다른 글
day33_2 - JAVA (자바, IO스트림) (0) 2021.07.29 day33_1 - JAVA (자바, 멀티 스레드) (0) 2021.07.29 day31 - JAVA (자바, 스트림, 플랫맵, 필터) (0) 2021.07.27 day30 - JAVA (자바, 스트림, 병렬 처리) (0) 2021.07.27 day29 - JAVA (자바, 메소드 참조, 스트림, 병렬처리) (0) 2021.07.25