java并发编程(ExecutorService中的submit方法)详解
2018-01-09 17:57
337 查看
[b]submit( ):[/b]该方法接收Runnable或Callable对象作为输入参数(该方法输入参数请参考上篇文章java线程池任务提交(Runnable、Callable、FutureTask),
这篇文章主要讲submit方法的返回值以及返回值的使用),返回一个Future对象。submit方法提交的任务中的call方法如果返回Integer,那么submit方法就返回Future<Integer>;如果call方法返回Float,那么submit方法就返回Future<Float>;call方法返回的List<Integer>,那么submit方法就返回Future<List<Integer>>,以此类推。具体返回的是哪一种,那么就使用对应类型的引用来引用submit方法的返回值。例如:
Call方法返回类型为List<Integer>,所以submit方法返回值类型为Future<List<Integer>>。
以上示例程序输出结果如下:
对submit方法返回值的使用,上面我们已经知道,实际返回值为List<Integer>,但是被封装成了Future<List<Integer>>,我们可以通过get()方法取出里面的List<Integer>对象。前面的文章(java线程池任务提交(Runnable、Callable、FutureTask) )中我们已经说明了submit方法其实是[b]伪返回[/b]的(回顾:即submit方法一执行,马上会产生Future类型的返回值,刚才提交的任务也许还在线程池的任务队列中排队)。那么这种情况下我们在submit方法返回的Future对象上调用get()方法来取出里面的List<Integer>时,get()方法所在的线程将会阻塞(Future类的get()方法时阻塞调用的),直到submit提交的任务在池中真正执行并且产生结果。
这篇文章主要讲submit方法的返回值以及返回值的使用),返回一个Future对象。submit方法提交的任务中的call方法如果返回Integer,那么submit方法就返回Future<Integer>;如果call方法返回Float,那么submit方法就返回Future<Float>;call方法返回的List<Integer>,那么submit方法就返回Future<List<Integer>>,以此类推。具体返回的是哪一种,那么就使用对应类型的引用来引用submit方法的返回值。例如:
Call方法返回类型为List<Integer>,所以submit方法返回值类型为Future<List<Integer>>。
以上示例程序输出结果如下:
对submit方法返回值的使用,上面我们已经知道,实际返回值为List<Integer>,但是被封装成了Future<List<Integer>>,我们可以通过get()方法取出里面的List<Integer>对象。前面的文章(java线程池任务提交(Runnable、Callable、FutureTask) )中我们已经说明了submit方法其实是[b]伪返回[/b]的(回顾:即submit方法一执行,马上会产生Future类型的返回值,刚才提交的任务也许还在线程池的任务队列中排队)。那么这种情况下我们在submit方法返回的Future对象上调用get()方法来取出里面的List<Integer>时,get()方法所在的线程将会阻塞(Future类的get()方法时阻塞调用的),直到submit提交的任务在池中真正执行并且产生结果。
相关文章推荐
- ExecutorService的execute和submit方法
- ExecutorService的execute和submit方法
- 0007 ExecutorService的execute和submit方法【基础】
- ExecutorService的execute和submit方法的区别
- ExecutorService的execute和submit方法区别
- ExecutorService的execute和submit方法
- ExecutorService的submit和execute方法
- ExecutorService的execute和submit方法
- java ExecutorService使用方法详解
- 关于ExecutorService中的execute()和submit()方法的区别
- ExecutorService的execute和submit方法
- ExecutorService的execute和submit方法
- ExecutorService的submit(Runnable x)和execute(Runnable x) 两个方法的本质区别
- ExecutorService的execute和submit方法
- ExecutorService的execute和submit方法
- ExecutorService的submit方法的坑
- Java线程池ExecutorService方法详解
- ExecutorService的execute和submit方法
- ExecutorService的execute和submit方法
- (转)ExecutorService的execute和submit方法