ThreadPoolExetor#submit(Callable<T> task) 有返回值
ThreadPoolExetor#submit(Runnable task, T result) 有返回值,返回值是通过result间接获取的
ThreadPoolExetor#submit(Runnable runnable) 没有返回值,获取的nulll
public class Sumit1 { public static void main(String[] args) throws InterruptedException, ExecutionException { Callable<String> callable = new Callable<String>() { public String call() throws Exception { System.out.println("This is ThreadPoolExetor#submit(Callable<T> task) method."); return "result"; } }; ExecutorService executor = Executors.newSingleThreadExecutor(); Future<String> future = executor.submit(callable); System.out.println(future.get()); } }
public class Submit2 { public static void main(String[] args) throws InterruptedException, ExecutionException { ExecutorService executor = Executors.newSingleThreadExecutor(); Data data = new Data(); System.out.println("before:" + data.hashCode()); Future<Data> future = executor.submit(new Task(data), data); System.out.println("after:" + future.get().hashCode()); System.out.println(future.get().getName()); } } class Data { String name; public String getName() { return name; } public void setName(String name) { this.name = name; } } class Task implements Runnable { Data data; public Task(Data data) { this.data = data; } public void run() { System.out.println("This is ThreadPoolExetor#submit(Runnable task, T result) method."); data.setName("kevin"); } }
public class Submit3 { public static void main(String[] args) throws InterruptedException, ExecutionException { Runnable runnable = new Runnable() { public void run() { System.out.println("This is ThreadPoolExetor#submit(Runnable runnable) method."); } }; ExecutorService executor = Executors.newSingleThreadExecutor(); Future<?> future = executor.submit(runnable); System.out.println(future.get()); } }