Runable
线程执行无返回值
class TaskWithResult implements Runable
Callable
线程执行有返回值
class TaskWithResult implements Callable<T>
Future(未来的意思)
Future.get() 用来获取线程的结果
Future对象本身可以看作是一个显式的引用,一个对异步处理结果的引用
当线程还没有执行结束、得不到返回结果时、Future.get()将会阻塞(block)
(当另外一个线程需要使用某一个线程的结果时,可以通过Future引用的get()方法去获得,如果结果还未出来,调用此方法的线程被block,直到结果出来)
如果无法一直等待下去、可以设置超时时间 Future.get(long timeout, TimeUnit unit)
结合线程池使用
executorService.execute(Runable run); // 没有返回结果
executorService.submit(Runable run); // 返回future.get() 永远返回null 表示成功
executorService.submit(Callable run); // 有返回结果 future.get() 、有异常抛异常
纯属个人理解
不理解或者是有什么错误的地方、欢迎留言并会及时回复和改正的
网友评论