ExecutorService
来源:互联网 发布:编程语言实现模式 源码 编辑:程序博客网 时间:2024/06/10 01:16
ExecutorService
ExecutorService扩展了Executor并添加了一些生命周期管理的方法。一个Executor的生命周期有三种状态,运行 ,关闭 ,终止 。Executor创建时处于运行状态。当调用ExecutorService.shutdown()后,处于关闭状态,isShutdown()方法返回true。这时,不应该再想Executor中添加任务,所有已添加的任务执行完毕后,Executor处于终止状态,isTerminated()返回true。 如果Executor处于关闭状态,往Executor提交任务会抛出unchecked exception RejectedExecutionException。
ExecutorService提供了execute()方法和submit()方法,它俩区别主要有: a. execute()方法只接受Runnable类型的实例,所以不能拿到返回值,也不能动态获取线程执行的情况 b. submit()方法接受Runnable和Callable实例,会返回Future实例,Future实例的get()方法可以获取线程执行返回值,并能抛出线程执行异常。所以如果要获取线程执行返回的结果,并能处理线程执行时可能出现的异常,或者想中途取消线程执行时可以使用submit()方法
public interface ExecutorService extends Executor { void shutdown(); List<Runnable> shutdownNow(); boolean isShutdown(); boolean isTerminated(); boolean awaitTermination(long timeout, TimeUnit unit) throws InterruptedException; // 省略部分方法 }
注意: 1. 多个线程并发执行时,若其中某一个线程出现了异常并且没有被处理,则该线程会自动停止执行,但其他线程还是会正常执行,这就是为什么tomcat请求出现异常时,tomcat还可以继续提供服务的原因。 2. tomcat提供了线程池和等待池,每一个请求过来都会重新启动一个新的线程处理该请求,若线程池中线程用完,再来请求的时候就会放到等待池中等待,当其中有线程释放回线程池中时,就会为等待池中的请求分配线程处理请求。
- ExecutorService
- ExecutorService
- ExecutorService
- ExecutorService
- ExecutorService
- ExecutorService
- ExecutorService
- ExecutorService
- ExecutorService
- ExecutorService
- ExecutorService
- ExecutorService
- ExecutorService
- ExecutorService
- Java ExecutorService
- ExecutorService使用
- ExecutorService生命周期
- ExecutorService生命周期
- 【上外青年】人物 ‖ 何晗:天才都是异类
- tar.xz文件的压缩解压
- gitlab常用命令
- 论坛开发实例 (精通Spring+4.x++企业应用开发实战)
- raphael.js+servlet仿http://map.norsecorp.com/做态势感知
- ExecutorService
- SpringBoot中进行邮件发送
- 深入java 序列化的一些坑(转载)
- 【Java并发编程】之五:volatile变量修饰符—意料之外的问题(含代码)
- 多线程/并发笔记:线程创建的三种方式
- 本地数据库-SQLLite
- 《Effective C++读书笔记》--条款34:区分接口继承和实现继承
- luoguP3834 【模板】可持久化线段树 1(主席树)
- future_callable