자바 스레드 생명 주기자바 스레드의 생명 주기는 시작부터 시작하여 실행, 일시 중지, 종료의 상태를 갖고 있다. 1. New - 스레드가 생성되고 아직 시작되지 않은 상태2. Runnable - 실행될 준비가 됐거나, 실제로 실행 중인 상태3. Blocked - 동기화 락을 기다리는 상태, synchronized에서만 사용하는 특별한 스레드 대기 상태4. Waiting - 다른 스레드의 작업이 완료되기를 무기한 기다리는 상태5. Timed Waiting - 스레드가 일정 시간 동안 대기하는 상태6. Terminated - 스레드의 실행이 완료된 상태 join - 다른 스레드의 작업 대기class SumTask implements Runnable { int startValue; int endV..
개요Stream은 중간 연산을 거친 데이터들을 collect 최종 연산을 통해 다양한 컬렉션으로 반환할 수 있다. 구조public interface Stream extends BaseStream> { .. //Collector 인터페이스를 통해 최종 연산 반환 타입 지정 R collect(Collector collector); ..}collect 연산은 Collector 인터페이스을 매개변수로 받아서 알맞은 컬렉션 형태로 반환한다. 자바에서 Collectors 클래스를 통해 Collector 인터페이스의 대부분 기능을 구현해 놓았다. Collectors 클래스에서 어떤 기능들로 어떤 타입들을 반환하는지 알아보자. List 반환//수정 가능List list = Stream...
Stream이란?Java 8부터 도입된 기능으로 데이터 흐름을 추상화해서 다루는 도구이다. 컬렉션 데이터를 함수형 프로그래밍 방식으로 처리할 수 있게 해준다. Stream 연산Stream 연산은 중간 연산과 최종 연산으로 나뉜다. List numbers = List.of(1,2,3,4)int sum = numbers.stream() .filter(n -> n % 2 == 0) // 중간 연산 -> 짝수 필터링 후 Stream 반환 .map(n -> n * 2) // 중간 연산 -> 두 배 변환 후 Stream 반환 .sum(); // 최종 연산 -> 합계 반환중간 연산은 Stream을 반환하여 중간 연산을 통해 체이닝이 가능하다. 최종..
메서드 참조란?이미 정의된 메서드를 그대로 참조하여 람다 표현식을 더 간결하게 작성하는 문법이다.즉, 람다가 단순히 이미 정의된 어떤 메서드를 호출하는 경우, 이를 축약해준다. 람다와 관련된 포스팅은 해당 글을 참고하면 좋을 것 같다. 람다 -> 메서드 참조Function function = s -> s.length();매개변수로 문자열이 들어오면 문자열의 길이를 반환해주는 람다식이다. Function function = String::length;위 람다식을 변환한 메서드 참조 형태이다.'::' 연산자를 사용해 메서드 참조를 나타 낼 수 있다. 메서드 참조에서는 컴파일러가 시그니처(매개변수, 타입)을 바탕으로 메서드 참조와 연결해주기 때문에, 명시적으로 매개변수를 작성하지 않아도 자동으로 추론되어 호..
개요메서드 파라미터에 값이 아닌 어떠한 로직을 넘기고 싶을 경우가 있다면, 어떻게 해야 할까? 인터페이스 구현 후, 구현한 클래스 넘기기public class ExMain { public static void hello(Procedure procedure) { //4. 메서드 실행 procedure.run(); } //1. 인터페이스 구현 static class Dice implements Procedure { @Override public void run() { int randomValue = new Random().nextInt(6) + 1; System.out.println("주사위 = " + ..