细说Callable接口

在说callable之前我们先说一下FutureTask这个类
当一个线程需要等待另一个线程把某个任务执行完后它才能继续执行,此时可以使用FutureTask。(下面具体详细展开这句话)
细说Callable接口从上图我们可以看到FutureTask实现了RunableFuture接口,同时RunableFuture又继承Future,Runable接口
构造器:
细说Callable接口从构造器中我们看出参数是Callable接口
那我们考虑Callable怎么启动线程呢?
Thread构造器里参数里只有Runnable,并没有Callable,根据上面的分析,我们能得出FutureTask是Runnable和Callable中间的桥梁
具体demo:
细说Callable接口下面说说FutureTask中get():
通过get()方法来获取异步任务的结果,但是会阻塞当前线程直至异步任务执行结束。
demo:
细说Callable接口通过get()方法来获取异步任务的结果,但是会阻塞当前线程直至异步任务执行结束。因为会阻塞当前线程,所以才会过几秒返回call()的返回值。
所以我们通常把get()放在最后,以防会堵塞其他线程
细说Callable接口细说Callable接口
两个线程同时调用call(),但执行结果只会出现一个
应用:在很多高并发的环境下,往往我们只需要某些任务只执行一次。这种使用情景FutureTask的特性恰能胜任。