JUC 二 callable接口的使用

1, 面试题:callable接口与runnable接口的区别?

 答:(1)是否有返回值

       (2)是否抛异常

       (3)落地方法不一样,一个是run,一个是call

2,什么是FutureTask'?

    未来的任务,用它就干一件事,异步调用

    main方法就像一个冰糖葫芦,一个个方法由main串起来。

    但解决不了一个问题:正常调用挂起堵塞问题

     FutureTasK

     

    例子:

    (1)老师上着课,口渴了,去买水不合适,讲课线程继续,我可以单起个线程找班长帮忙买水,

    水买回来了放桌上,我需要的时候再去get。

    (2)4个同学,A算1+20,B算21+30,C算31*到40,D算41+50,是不是C的计算量有点大啊,

        FutureTask单起个线程给C计算,我先汇总ABD,最后等C计算完了再汇总C,拿到最终结果

    (3)高考:会做的先做,不会的放在后面做

3,怎么用?

  • 写一个类 A,实现callable接口,在创建一个futureTask类用实现callable接口的A当做实参进行创建,最后创建Thread线程类,用FutureTask类当做实参。

4,原理:

        一般FutureTask多用于耗时的计算,主线程可以在完成自己的任务后,再去获取结果。

        仅在计算完成时才能检索结果;如果计算尚未完成,则阻塞 get 方法。一旦计算完成,就不能再重新开始或取消计算。get方法而获取结果只有在计算完成时获取,否则会一直阻塞直到任务转入完成状态, 然后会返回结果或者抛出异常。

        只计算一次。

        get方法放到最后。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值