Java
자바 쓰레드 Future
NaHyungMin
2020. 11. 3. 16:26
자바 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); 에서 실행이 완료될 때까지 동기화 시킬 수 있음.