【笔记】Java的Callable接口

前言

通常创建一个线程,需要实现Runnable接口并重写run()方法,但是run()方法的返回值只能是void
当需要创建又返回值的线程时,可以实现Callable接口并重写call()方法

实现Callable的类与实现Runnable的类的区别

  • call()有返回值,且返回值类型可以自定义
  • call()可以抛异常
  • 实现Callable的类只能通过线程池启动

实现Callable接口

1
2
3
4
5
6
7
class 类名 implemente Callable<返回值类型> {
@Override
public 返回值类型 call() throws Exception {
...
return null;
}
}

通过线程池启动

1
2
3
ExecutorService executorService = Executors.newCachedThreadPool();
Future<返回值类型> future = executorService.submit(new 实现Callable的类名());
返回值类型 result = future.get();

完成