zoukankan      html  css  js  c++  java
  • 【转】说说Runnable与Callable

    说说Runnable与Callable

     

    Callable接口:

     View Code

    Runnable接口:

     View Code

    相同点:

    1. 两者都是接口;(废话)
    2. 两者都可用来编写多线程程序;
    3. 两者都需要调用Thread.start()启动线程;

    不同点:

    1. 两者最大的不同点是:实现Callable接口的任务线程能返回执行结果;而实现Runnable接口的任务线程不能返回结果;
    2. Callable接口的call()方法允许抛出异常;而Runnable接口的run()方法的异常只能在内部消化,不能继续上抛;

    注意点:

    • Callable接口支持返回执行结果,此时需要调用FutureTask.get()方法实现,此方法会阻塞主线程直到获取‘将来’结果;当不调用此方法时,主线程不会阻塞!

    Callable工作的Demo:

     View Code

    测试结果:

     View Code

    Runnable工作的Demo:

     View Code

    测试结果:

     View Code

    写此篇的原因是一次面试中问到Callable与Runnable的区别,当时用的多的是Runnable,而Callable使用很少!

    比较了两者后(网上查了不少),发现Callable在很多特殊的场景下还是很有用的!最后留点抄的代码,加深对Callable的认识!

     View Code
     
    分类: 每天一点
  • 相关阅读:
    elementui form-item中多个字段校验
    Element-ui的 el-form 使用 v-if校验失灵问题
    fullcalendar title换行
    html拼接
    element-ui cascader 省市区 动态加载
    切换vue项目初始化路径
    用JavaScript获取当月第一天和最后一天
    小宝和小黑
    python目录
    3
  • 原文地址:https://www.cnblogs.com/didiaoxiong/p/9241278.html
Copyright © 2011-2022 走看看