본문 바로가기
Java

자바 쓰레드 Future

by NaHyungMin 2020. 11. 3.

자바 JDK 1.5?에서 나왔다고 하는 쓰레드.

닷넷에 백그라운드 워커랑 비슷한 개념같다. 아마 비슷한 시기에 나와서 그런듯함.

 

package main.java.com;

import java.util.concurrent.*;

public class FutureMain {
    public static void main(String[] args) throws InterruptedException, ExecutionException, TimeoutException {
        System.out.println("start");

        ExecutorService executorService = Executors.newCachedThreadPool();
        Future<Double> future = executorService.submit(new Callable<Double>() {
            @Override
            public Double call() throws Exception {
                System.out.println("call");
                return addDouble();
            }
        });
        System.out.println("end1");
        Double result = future.get(1, TimeUnit.SECONDS); //블록킹
        System.out.println(result);
    }

    private static Double addDouble() {
        Double value = 0.0D;

        for(int i = 0; i < 100; i++){
            System.out.println("call" + i);
            value = value + 1;
        }

        return value;
    }
}

 

ExecutorService을 통해서 쓰레드를 만들고 돌리는 형식. 매개변수로 팩토리가 들어가는 걸로 봐선 팩토리 생성 후 넣을 수 있는 개념같다.

 

해당 코드는 바로 실행되고, Double result = future.get(1, TimeUnit.SECONDS); 에서 실행이 완료될 때까지 동기화 시킬 수 있음.

'Java' 카테고리의 다른 글

자바 ExecutorService2  (0) 2020.11.03
자바 ExecutorService  (0) 2020.11.03
스프링부트 JPA 사용기  (0) 2020.11.01
인텔리제이 클래스 다이어그램  (0) 2020.09.17
자바 Post 한글 깨짐  (0) 2020.08.21