Java those things

JAVA 线程 Runable 和 Callable 以及 Fu

2018-03-21  本文已影响28人  M_ENG

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() 、有异常抛异常


纯属个人理解   

不理解或者是有什么错误的地方、欢迎留言并会及时回复和改正的

上一篇 下一篇

猜你喜欢

热点阅读