- 浏览: 1115915 次
文章分类
- 全部博客 (379)
- S2SH (16)
- stuts2 (0)
- java语言 (81)
- JSP (17)
- <html>元素 (11)
- javaweb (4)
- web容器 (3)
- ext (23)
- javaScript (48)
- ant (1)
- liferay (1)
- sql (9)
- css (42)
- 浏览器设置 (3)
- office_world (1)
- eclipse (4)
- 其它 (28)
- 操作系统 (5)
- android (6)
- Struts2 (11)
- RegEx (3)
- mysql (5)
- BigDATA (1)
- Node.js (1)
- Algorithm (10)
- Apache Spark (1)
- 数据库 (5)
- linux (2)
- git (1)
- Adobe (3)
- java语言,WebSocket (1)
- Maven (3)
- SHELL (1)
- XML (2)
- 数学 (2)
- Python (2)
- Java_mysql (1)
- ReactJS (6)
- 养生 (4)
- Docker (1)
- Protocols (3)
- java8 (2)
- 书籍 (1)
- Gradle (2)
- AngularJS (5)
- SpringMVC (2)
- SOAP (1)
- BootstrapCSS (1)
- HTTP协议 (1)
- OAuth2 (1)
最新评论
-
Lixh1986:
Java并发编程:自己动手写一把可重入锁https://blo ...
Java之多线程之Lock与Condition -
Lixh1986:
http://win.51apps.com.cn/https: ...
temp -
ztwsl:
不错,支持很好
HttpServletRequest和ServletRequest的区别 -
guodongkai:
谢谢您能将知识精华汇编总结,让初学者们从原理中学会和提高。
javaScript之function定义 -
kangwen23:
谢谢了,顶顶
struts2中的ValueStack学习
Java之 java.util.concurrent 包之Executor与ExecutorService
- 博客分类:
- java语言
一、问题: execute() 与 submit() 的区别?
execute()
来自 Executor 接口,
没有返回值,
只接受 Runnable 对象。
submit()
来自 ExecutorService 接口( ExecutorService 接口继承了 Executor 接口)
返回 Future 对象
可以接受 Callable, Runnable 对象。
二、程序
java.util.concurrent包之Execuotor系列文章
00_Java之 java.util.concurrent 包之概述
01_Java之java.util.concurrent包之Executor与ExecutorService
02_Java之 java.util.concurrent 包之ExecutorService之submit () 之 Future
03_Java之多线程之Callable与Future
04_Java之多线程之Lock
转载请注明,
原文出处:http://lixh1986.iteye.com/blog/2360304
-
execute()
来自 Executor 接口,
没有返回值,
只接受 Runnable 对象。
submit()
来自 ExecutorService 接口( ExecutorService 接口继承了 Executor 接口)
返回 Future 对象
可以接受 Callable, Runnable 对象。
二、程序
import java.util.concurrent.Callable; import java.util.concurrent.Executor; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.Future; import org.junit.Test; public class T01_Submit_VS_Execute { private Runnable runnable = new Runnabled(); private Callable<String> callable = new Callabled(); @Test public void testName() throws Exception { // public interface Executor // public interface ExecutorService extends Executor Executor e = Executors.newCachedThreadPool(); ExecutorService es = Executors.newScheduledThreadPool(10); // execute() // void java.util.concurrent.Executor.execute(Runnable command) //===================================================================================== // execute the given command (at some time in the future) with void return result. // e.execute(runnable); es.execute(runnable); // submit() // <T> Future<T> java.util.concurrent.ExecutorService.submit() //===================================================================================== /* submit and execute a value-returning task and returns a Future representing the pending results of the task. The Future's get() method will return the task's result upon successful completion. If you would like to immediately block and waiting for a task, you can use constructions of the form: result = exec.submit(aCallable).get(); */ Future<String> f1 = es.submit(callable); /* Submits a Runnable task for execution and returns a Future representing that task. The Future's get method will return null upon successful completion. */ Future<?> f2 = es.submit(runnable); Future<String> f3 = es.submit(runnable, ""); // Waits (if necessary) for the computation to complete, and then retrieves its result. f1.get(); f2.get(); f3.get(); /** NOTE: Difference between "execute()" and "submit()" 1. void execute(): # execute a task, don't expect an execution result. 2. Future submit(): # execute a task, don't expect an execution result. OR # execute a task, expect a result. - call get() method immediately with blocking the thread. - store Future object first, then call get() method after all task complete. */ } class Runnabled implements Runnable{ @Override public void run() { } } class Callabled implements Callable<String>{ @Override public String call() throws Exception { return null; } } }
java.util.concurrent包之Execuotor系列文章
00_Java之 java.util.concurrent 包之概述
01_Java之java.util.concurrent包之Executor与ExecutorService
02_Java之 java.util.concurrent 包之ExecutorService之submit () 之 Future
03_Java之多线程之Callable与Future
04_Java之多线程之Lock
转载请注明,
原文出处:http://lixh1986.iteye.com/blog/2360304
-
发表评论
-
java 将文件夹所有的文件合并到指定的文件夹下
2020-06-30 19:17 1083场景:将文件夹所有的文件合并到指定的文件夹下 另外:如果想效 ... -
多线程-线程池的四种创建方式
2020-04-01 18:38 509多线程-线程池的四种创建方式 https://blog.cs ... -
Java基础之:nio
2019-11-13 15:38 500一、理论讲解: 史上最强Java NIO入门:担心从入门到放弃 ... -
Java 分布式之:RPC 基本概念
2019-11-13 15:07 478转载: https://www.jianshu.com/p/ ... -
Java之 volatile 关键字原理详解
2019-11-07 15:36 569一、什么是 volatile ? ... -
POI实现excell批注背景图片(仿html浮窗显示图片)
2019-10-21 08:17 715POI实现excell批注背景图片(仿html浮窗显示图片) ... -
Java之设计模式之 Observer 观察者
2019-07-04 17:21 1095观察者设计模式 Java 已经实现了该模式,并且提供了使用类 ... -
HashMap, LinkedHashMap and TreeMap
2019-03-01 11:04 685https://stackoverflow.com/a/177 ... -
Java lib 操作 excel 插入图片
2019-01-19 12:46 882https://poi.apache.org/componen ... -
数据库连接池C3P0
2018-05-29 16:50 906一、名字的由来 很多 ... -
Java8之集合(Collection)遍历 forEach()、stream()
2018-05-29 14:39 20759package java8.collections; ... -
Junit Vs main on "java.util.concurrent.Executors"
2017-11-10 16:44 839Same code with different result ... -
Java之大数据学习路线
2017-11-03 10:08 5727三个月大数据研发学习 ... -
Java中创建对象的5种方式
2017-10-26 14:21 843一、Java之5种创建对象的方式 ————————————— ... -
Log4j和Slf4j的比较
2017-06-23 12:41 1420一直搞不清 Log4j 和 SLF4j 的关系。今天才若有所 ... -
Java之Java7新特性之try资源句式
2017-04-20 14:58 5388Java之Java7新特性之try资源句式 一、【try资源 ... -
Java之 java.util.concurrent 包之ExecutorService之submit () 之 Future
2017-03-04 21:27 3843一、如何使用 ExecutorService.submit() ... -
JAVAEE之单用户登录
2017-02-05 11:55 1063单用户登录是系统中数据一直性的解决方案之一。 问题背景: 试 ... -
Java之多线程之线程池之线程重复使用
2017-02-04 13:33 5574一、问题背景 在使用多线程时,如果要开启一个任务,则就需要新 ... -
Java之语法之方法调用之地址传值之空对象(null)
2017-01-26 14:05 3343一、问题: public void test ...
相关推荐
Java.util.concurrent是Java 5.0引入的一个重要包,它为多线程编程提供了一组高级并发工具。这个包的设计者是Doug Lea,它的出现是JSR-166的一部分,也被称作Tiger更新。Java.util.concurrent的引入是为了解决传统...
Java.util.concurrent(JUC)是Java平台中的一个核心包,专门用于处理多线程并发问题。这个包包含了大量的工具类和接口,极大地简化了并发编程的复杂性,提高了程序的性能和可伸缩性。本测试源文件主要是针对JUC并发...
标题中提到了“java.util.concurrent.uml.pdf”,这表明文件是一份Java并发编程工具包java.util.concurrent的UML(统一建模语言)类结构图的PDF格式文件。UML图能够帮助开发者理解Java并发包中的类、接口及其关系,...
`java.util.concurrent` 包(简称JUC)是Java提供的一个强大的并发工具包,它提供了丰富的并发组件,如线程池、并发容器、锁和同步机制等,极大地简化了并发编程的复杂性。本篇文章将深入探讨如何使用`java.util....
《Java Util Concurrent中文版》是Java并发编程领域的重要参考资料,主要涵盖了Java标准库中的`java.util.concurrent`包及其相关类和接口。这个包是Java多线程编程的核心,提供了高效、安全的并发工具,帮助开发者...
2. **Executor框架**:`java.util.concurrent.Executor`是执行任务的核心接口,它定义了运行任务的方法。`ExecutorService`是Executor的一个子接口,提供了管理和控制执行器的额外功能,如`shutdown()`用于关闭执行...
从版本该库以多发行版JAR的形式提供,并且可以与Java 8作为类路径库或与Java 9+作为模块一起使用。 重要的! 在版本,工件已重命名:新名称: < dependency> < groupId>...
- `java.util.concurrent.Executor`:这是最基本的执行器接口,只有一个 `execute(Runnable task)` 方法,用于提交任务。 - `java.util.concurrent.ExecutorService`:扩展了 `Executor`,提供了管理执行器生命周期...
`Executors`是`java.util.concurrent`包下的工具类,它提供了多个静态工厂方法,用于创建不同类型的线程池。常见的线程池类型有: - **newFixedThreadPool(int nThreads)**:创建一个固定大小的线程池。线程池的...
Java实现生产者消费者模型 生产者消费者模型,是一般面试题都会考的,下面介绍使用ReetrantLock实现 生产者消费者模型。...import java.util.concurrent.ExecutorService; import java.util.concurrent.Executor
Java `java.util.concurrent`包提供了各种并发工具类,包括`ExecutorService`和`Future`接口,它们允许我们更高效地管理和协调并发任务。例如,可以使用`ExecutorService.newFixedThreadPool(int nThreads)`创建一个...
import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.Future; import java.util.zip.ZipEntry; import java.util.zip.ZipFile; public class ...
`Executor`框架是`java.util.concurrent`的核心组件之一,它为任务的执行提供了一个统一的接口。其中最重要的接口是`ExecutorService`,它定义了线程池的行为,使得我们可以将任务(`Runnable`或`Callable`对象)...
每个线程负责下载不同的资源,`java.util.concurrent`包提供了丰富的工具,如`ExecutorService`和`Future`,可以方便地管理线程池和控制并发执行。线程池可以避免频繁创建和销毁线程带来的开销。 四、线程等待和...
自Java 5引入并发包`java.util.concurrent`以来,线程的管理与控制变得更为高效与便捷。在这个包中,`Executor`框架成为了线程管理和调度的核心。通过`Executor`,我们可以更方便地创建线程池,并对线程进行管理。 ...
在Java中,线程池的实现基于`java.util.concurrent`包中的`ExecutorService`接口和`ThreadPoolExecutor`类。`ThreadPoolExecutor`允许我们定制线程池的行为,如核心线程数、最大线程数、线程存活时间、工作队列等...
这通常是通过Java中的`java.util.Timer`类或者`java.util.concurrent.ScheduledExecutorService`来实现的。这两个工具提供了不同的功能和使用场景,让我们一一进行深入探讨。 首先,我们来看`java.util.Timer`类。...
线程池(java.util.concurrent.ExecutorService) 为了解决频繁创建和销毁线程的开销,Java提供了线程池的概念。线程池是一组预先创建的线程,用于处理到来的任务。`ExecutorService` 接口和它的实现类(如 `...
import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.Future; public class AsyncTaskFramework<T> { private final ExecutorService executor; ...