callable接口
来源:互联网 发布:淘宝人群标签 编辑:程序博客网 时间:2024/06/06 19:05
callable接口和Runnable接口
相同点:两者都是接口,都可以编写多线程实现,两者都是调用Thread.start()启动。
不同点:实现Callable接口的任务线程能返回执行结果;而实现Runnable接口的任务线程不能返回结果;
Callable接口的call()方法允许抛出异常;而Runnable接口的run()方法的异常只能在内部消化,不能继续上抛;
Callable接口支持返回执行结果,此时需要调用FutureTask.get()方法实现,此方法会阻塞主线程直到获取‘将来’结果;当不调用此方法时,主线程不会阻塞!
import java.util.concurrent.Callable;import java.util.concurrent.FutureTask;class CallableImpl implements Callable<String>{ private String name; public CallableImpl(String name) { this.name = name; } @Override public String call() throws Exception { Thread.sleep(1000); return this.name+"==================="; }}public class CallableDemo { public static void main(String[] args) throws Exception { Callable<String> callable=new CallableImpl("lisi"); FutureTask<String> task=new FutureTask<>(callable); Thread thread=new Thread(task); thread.start(); //调用get阻塞线程,否则就不会阻塞。 String name=task.get(); System.out.println(name); System.out.println("main thread"); }}
结果:
body
lisi===================
main thread
这是消费者和生产组的模型。等子线程生产了产品时,消费者阻塞队列,然后在从消费者取产品。
callable的原理
阅读全文
0 0
- callable接口
- java的Callable接口
- concurrent包Callable接口
- Callable接口使用说明
- java中的Callable接口
- Callable与future接口
- Callable接口测试
- Callable接口学习
- 多线程 - Callable接口
- Callable接口实现多线程
- Callable接口的使用
- Callable接口解析
- Java多线程Callable接口
- Callable接口与Runnable
- Callable接口实现多线程
- 浅谈Callable接口
- 【Java】Callable 接口
- Callable接口探究
- 正则表达式
- BZOJ 1034: [ZJOI2008]泡泡堂BNB(贪心)
- String中的intern试题解析
- 从零开始写Python爬虫 --- 1.2 BS4库的安装与使用
- java 23种设计模式 深入理解
- callable接口
- js实现深拷贝
- Mysql中设置小数点用什么数据类型
- 爬虫笔记(10/2)------爬虫框架
- ajax返回404错误
- js封装自定义事件
- Spring 技术内幕之aop实现分析
- 51nod 1674 区间的价值 V2(分治)
- java中复制文件的几种形式及比较