java的callable_java并发包(一)Callable接口

刚开始使用java线程的时候,使用都是Thread或Runnable接口。最近发现java并发包下,提供了一个与Runnable接口类似的Callable接口。Callable提供了比Runnable更灵活和宽松的call()。

Callable类似于Runnable接口,实现Callable接口的类和实现Runnable的类都是可被其它线程执行的任务

Callable经常和java线程池一起启用:

//创建线程池

ExecutorService threadPool = Executors.newSingleThreadExecutor();

//TaskCallabl是Callable的实现类

Future future = threadPool.submit(new TaskCallable());

//获取线程执行结果

System.out.println(future.get());

threadPool.shutdown();

Callable  的使用如下

/**

* Callable类似于Runnable接口,实现Callable接口的类和实现Runnable的类都是可被其它线程执行的任务。

*

* 当将一个Callable的对象或Runnable对象

* ,传递给ExecutorService的submit方法,则该对象的call()或run()会自动在一个线程上执行, 并且会返回执行结果Future对象

*

* Callable和Runnable有以下几点不同:

* (1)、Callable规定的方法是call(),而Runnable规定的方法是run().

* (2)、Callable的任务执行后可返回值,而Runnable的任务是不能返回值的.

* (3)、call()方法可抛出异常,而run()方法是不能抛出异常的.

* (4)、运行Callable任务可拿到一个Future对象,获取线程的执行结果.

*/

class TaskCallable implements Callable

{

@Override

public String call() throws Exception

{

Thread.sleep(2000);

return "futureResult";

}

}

原文:https://blog.csdn.net/love_yu_xiu/article/details/84467701

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值