更新时间:2024-05-16 来源:黑马程序员 浏览量:

Runnable接口和Callable接口都用于在多线程编程中表示可以并行执行的任务,但它们之间有一些重要的区别:
(1)Runnable接口的run()方法不返回任何结果,它通常被用于执行一些无需返回结果的操作。
(2)Callable接口的call()方法可以返回一个泛型类型的结果,允许任务执行完成后返回计算结果。
(1)run()方法不能抛出任何受检查异常,只能抛出未受检查异常(RuntimeException)。这意味着我们必须在run()方法内部处理任何受检查异常。
(2)call()方法可以抛出任何类型的异常,包括受检查异常。但是,调用call()方法时必须显式处理可能抛出的异常。
(1)在Runnable中,无法直接获取任务执行的返回结果。如果需要获取结果,我们必须使用其他机制,比如在任务执行完毕后修改共享变量的方式。
(2)Callable的call()方法允许通过Future接口来获取任务的返回值。Future提供了方法来检查任务是否已经完成,并获取其返回值,或者等待任务完成后再获取返回值。
总的来说,如果我们的任务不需要返回结果,或者我们可以通过其他方式获取结果(比如修改共享变量),那么使用Runnable是比较合适的。如果我们的任务需要返回结果,或者需要抛出受检查异常,那么我们应该使用 Callable接口。
1024首播|39岁程序员逆袭记:不被年龄定义,AI浪潮里再迎春天
2025-10-241024程序员节丨10年同行,致敬用代码改变世界的你
2025-10-24【AI设计】北京143期毕业仅36天,全员拿下高薪offer!黑马AI设计连续6期100%高薪就业
2025-09-19【跨境电商运营】深圳跨境电商运营毕业22个工作日,就业率91%+,最高薪资达13500元
2025-09-19【AI运维】郑州运维1期就业班,毕业14个工作日,班级93%同学已拿到Offer, 一线均薪资 1W+
2025-09-19【AI鸿蒙开发】上海校区AI鸿蒙开发4期5期,距离毕业21天,就业率91%,平均薪资14046元
2025-09-19