Java Callable和Future学习
导语:Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。下面我们来看看JavaCallable和Future学习,希望对大家有所帮助。
常见用法
一般Callable和Future搭配使用的方法如下:
把Callable任务提交给线程池,线程池给我们返回一个Future对象;
然后我们通过Future拿到一个结果;
说明:线程池帮我们做了太多事情,而且封装起来,这样子我们理解底层机制就非常困难,毕竟距离冰冷的现实越远,对底层越难以理解;
原理概述
线程池背后做的事情如下:
把Callable转换为FutureTask(这个对象实现了Futuure和Runnable接口,并且包含Callable属性);
线程把FutureTask当做Runnable进行调度,在真正执行的时候调用的是FutureTask中的`run方法,这个方法干的事情就是:
调用Callable的call方法,然后再把结果放到FutureTask的属性outcome上,
这样,当我们FutureTask调用get方法(实现了Futuure的get方法),(当然完成的情况下)就给我们返回outcome;
-
40个Java多线程问题总结
Java多线程是什么Java提供的并发(同时、独立)处理多个任务的机制。多个线程共存于同一JVM进程里面,所以共用相同的内存空间,较之多进程,多线程之间的通信更轻量级。依我的理解,Java多线程完全就是为了提高CPU的利用率。Java的线程有4种状态,新建(New)、运行(Runnabl...
-
Java 正则表达式
Java是一门编程语言,那么大家知道Java正则表达式是怎样的呢?下面一起来看看!Java正则表达式正则表达式定义了字符串的模式。正则表达式可以用来搜索、编辑或处理文本。正则表达式并不仅限于某一种语言,但是在每种语言中有细微的差别。正则表达式实例一个字符串其...
-
如何学好Java语言编程
决定好想学什么编程语言了吗,现在就让我们开始学习吧。所有你需要做的就是打开一本书,然后开始阅读,是这样的吗?不全是这样的。learn-first我会给出学习第一门编程语言的理想方法布局,你不仅应该学习这个布局方法,还应该享受精通它——如果不能掌握的话。学习第一门...
-
计算机二级考试Java精选训练题
下面是应届毕业生考试网小编搜索整理的计算机二级考试Java精选训练题,希望对大家有所帮助。[简答题]本题中,在下画线上填写代码,指定变量b为字节型,变量f为单精度实型,变量l为64位整型。publicclassjaval{publicstaticvoidmain(String[-]args){b=49;f=8.9f;l=0xfedl...
相关文章
- 如何理解Javascript的caller,callee,call,apply区别
- 如何理解Javascript的caller,callee,call,apply区别
- 如何理解Javascript的caller,callee,call,apply区别
- 如何理解Javascript的caller,callee,call,apply区别
- 如何理解Javascript的caller,callee,call,apply区别
- 如何理解Javascript的caller,callee,call,apply区别
- 如何理解Javascript的caller,callee,call,apply区别
- 如何理解Javascript的caller,callee,call,apply区别
- java的String=a; a==null和a.equals(null)这两个判断有什么区别
- 如何理解Javascript的caller,callee,call,apply区别