线程池ExecutorService
2017-02-20 18:11
183 查看
线程池: 任务提交到线程池,而不是直接交给某线程,线程池拿到任务后,它在内部找空闲的线程进行执行(封装),任务是提交给线程池,一个线程只能执行一个任务,但可以同时向一个线程池提交多个任务。
创建固定大小的线程池
创建缓存线程池
如何实现线程死掉后重新启动?
答案:创建单一线程池Executors.newSingleThreadExecutor();
关闭线程池
shutdown() 线程池中都处于空闲是结束线程池
shutdownNow()线程池不管是否有任务在执行都停止
例子:
//线程池
public class ThreadPool {
public static void main(String[] args) {
ExecutorService executorService = Executors.newFixedThreadPool(1);
Runnable command = new Runnable() {
@Override
public void run() {
System.out.println("1"+Thread.currentThread().getName());
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
};
executorService.execute(command);
executorService.execute(command);
executorService.execute(command);
executorService.execute(command);
executorService.execute(command);
executorService.shutdown();
}
}
输出:
1pool-1-thread-1
1pool-1-thread-1
1pool-1-thread-1
1pool-1-thread-1
1pool-1-thread-1
都是一个线程在执行这些任务;在3s执行下一个
----------------------------------------------------------------------
线程池启动定时器
调用ScheduledExecutorService的schedule方法,返回的ScheduleFuture对象可以取消任务。
支持间隔重复任务的定时方式,不直接支持绝对定时方式,需要转换成相对时间方式。
Executors.newSchdeduledThreadPool(3).schedule (....)
创建固定大小的线程池
创建缓存线程池
如何实现线程死掉后重新启动?
答案:创建单一线程池Executors.newSingleThreadExecutor();
关闭线程池
shutdown() 线程池中都处于空闲是结束线程池
shutdownNow()线程池不管是否有任务在执行都停止
例子:
//线程池
public class ThreadPool {
public static void main(String[] args) {
ExecutorService executorService = Executors.newFixedThreadPool(1);
Runnable command = new Runnable() {
@Override
public void run() {
System.out.println("1"+Thread.currentThread().getName());
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
};
executorService.execute(command);
executorService.execute(command);
executorService.execute(command);
executorService.execute(command);
executorService.execute(command);
executorService.shutdown();
}
}
输出:
1pool-1-thread-1
1pool-1-thread-1
1pool-1-thread-1
1pool-1-thread-1
1pool-1-thread-1
都是一个线程在执行这些任务;在3s执行下一个
----------------------------------------------------------------------
线程池启动定时器
调用ScheduledExecutorService的schedule方法,返回的ScheduleFuture对象可以取消任务。
支持间隔重复任务的定时方式,不直接支持绝对定时方式,需要转换成相对时间方式。
Executors.newSchdeduledThreadPool(3).schedule (....)
相关文章推荐
- Java线程池:ExecutorService,Executors
- 线程池ExecutorService和BlockingQueue
- Java ExecutorService四种线程池的例子与说明
- 【Java线程】Java线程池ExecutorService
- Handler+ExecutorService(线程池)+MessageQueue模式+缓存模式
- ExecutorService线程池
- JAVA基础(20) ExecutorService线程池讲解
- java多线程[9]:线程池(ExecutorService)
- Java线程池:ExecutorService,Executors
- ExecutorService--线程池
- 线程池 ExecutorService 详细介绍以及注意点区别
- ExecutorService常用方法和newFixedThreadPool创建固定大小的线程池
- ExecutorService常用方法和newFixedThreadPool创建固定大小的线程池
- Android Handler ExecutorService(线程池) 缓存模式
- EXECUTORSERVICE线程池
- Java 线程池ExecutorService详解及实例代码
- ExecutorService线程池
- [Android实例] Handler+ExecutorService(线程池)+MessageQueue模式+缓存模式
- 线程池 ExecutorService的使用
- Android之线程池ExecutorService