Java并发中,提供的Callable和Runnale最大的区别即为:
Callable接口可以返回值,而Runnable不能返回值;
package com.leasehouse; import java.util.concurrent.*; public class TestCallable { public static void main(String[] args) { ExecutorService executorService = Executors.newFixedThreadPool(10); try { Future<User1> future = executorService.submit(new taskCallable()); User1 ff = future.get(); System.out.println("ff = " + ff.getName()); } catch (InterruptedException e) { e.printStackTrace(); } catch (ExecutionException e) { e.printStackTrace(); } finally { executorService.shutdown(); } } } class taskCallable implements Callable<User1> { public User1 call() throws Exception { String cc = "fyc"; System.out.println("cc =" + cc); User1 user1 = new User1(); user1.setName(cc); Thread.sleep(3000); return user1; } } class User1 { private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } }