四个月的蜕变之单例模式创建线程池和使用
来源:互联网 发布:编程电极怎么编 编辑:程序博客网 时间:2024/05/10 06:21
年前没有几节课了,这应该是年前的最后几篇心得了,今天记录下线程池的创建和使用。因为在一个程序中往往都只会使用一个线程池,所以为了代码更加的完善,我们可以使用单例模式来创建线程池,单例模式是一种设计模式,特点是它私有化了构造方法,内部创建了一个需要返回的对象,比如我们创建线程池需要的就是一个线程池,所以返回的是一个ExecutorService的对象。
操作线程池一般分为如下几步:
1.创建线程池
2.创建Runnable对象
3.使用submit提交runnable实例
4.关闭线程池(一般是不用关闭的)
创建线程池有四种方式:
1.创建存活60秒的线程池:
ExecutorService threadPool = Executors.newCachedThreadPool();
2.创建一个固定线程数的线程池,存活时间很长
ExecutorService threadPool2 = Executors.newFixedThreadPool(5);
3.创建一个只有一个线程的线程池,存活时间很长
ExecutorService threadPool3 = Executors.newSingleThreadExecutor();
4.用封装好的单例模式ThreadPoolUtils.java来创建线程池
ExecutorService threadPool = ThreadPoolUtils.getThreadPool();
操作线程池一般分为如下几步:
1.创建线程池
2.创建Runnable对象
3.使用submit提交runnable实例
4.关闭线程池(一般是不用关闭的)
创建线程池有四种方式:
1.创建存活60秒的线程池:
ExecutorService threadPool = Executors.newCachedThreadPool();
2.创建一个固定线程数的线程池,存活时间很长
ExecutorService threadPool2 = Executors.newFixedThreadPool(5);
3.创建一个只有一个线程的线程池,存活时间很长
ExecutorService threadPool3 = Executors.newSingleThreadExecutor();
4.用封装好的单例模式ThreadPoolUtils.java来创建线程池
ExecutorService threadPool = ThreadPoolUtils.getThreadPool();
下面是我写的封装好的单例模式创建线程池和线程池的基本使用代码:
package com.jsjer;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;/* * 单例模式创建线程池 * 该模式可以保证程序中只创建一个线程池 */public class ThreadPoolUtils {private ThreadPoolUtils() {}private static final ExecutorService threadPool = Executors.newCachedThreadPool();public static ExecutorService getThreadPool() {return threadPool;}}
package com.jsjer;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;public class ThreadPoolDemo {public static void main(String[] args) {// 1.创建线程池//1.创建60s的线程池ExecutorService threadPool = Executors.newCachedThreadPool();//2.创建一个固定线程数的线程池,存活时间很长//ExecutorService threadPool2 = Executors.newFixedThreadPool(5);//3.创建一个只有一个线程的线程池,存活时间很长//ExecutorService threadPool3 = Executors.newSingleThreadExecutor();//4.用封装好的单例模式ThreadPoolUtils.java来创建线程池//ExecutorService threadPool = ThreadPoolUtils.getThreadPool();// 2.创建Runnable对象MyRunnable task = new MyRunnable();// 3.使用submit提交runnable实例threadPool.submit(task);// 4.关闭线程池threadPool.shutdown();//一般不用关闭线程池}}class MyRunnable implements Runnable {@Overridepublic void run() {System.out.println("shanglele");}}
0 0
- 四个月的蜕变之单例模式创建线程池和使用
- 四个月的蜕变之JDBC的四个步骤和代码实现
- 四个月的蜕变之UDP和TCP的简单实现和基本流程
- 四个月的蜕变之梦想起航的地方
- 四个月的蜕变之数据库的常用操作命令
- 四个月的蜕变之第一个星期
- 四个月的蜕变之自己对面向对象思想的理解
- 四个月的蜕变之关于匿名内部类的一个面试题
- 四个月的蜕变之JQuery的几种常用代码
- 四个月的蜕变之类占用内存空间的分析
- winform中console.write的使用、线程的产生、线程的使用、创建单例模式
- 从菜鸟到高手的蜕变,只需四个月!
- 单例模式创建线程池-ThreadPool
- 单例模式:单线程和多线程并发情况下的对象创建
- 创建型模式之原型模式和单例模式
- 四个月,我经历了蜕变
- java 单例模式之线程安全的饿汉模式和懒汉模式
- 单例模式之 对象的创建
- HDU-1698-Just A Hook (线段树区间修改,区间查询)
- Android微信支付开发
- 3D射线拾取算法揭秘
- NDK编程的一个坑—Arm平台下的类型转换
- leetcode oj java 143. Reorder List
- 四个月的蜕变之单例模式创建线程池和使用
- 《Head First设计模式》-工厂模式C++实现
- python 2-5 如何快速找到多个字典中的(key) viewkeys(集合)/reduce(lambda a,b:a&b,map(d.keys(),[d1,d2])
- zoj2314
- mysql5.7 修改默认密码
- POJ-1562(DFS)
- linux 用户和组管理
- 派生类和继承——(二)
- Indivisibility——Codeforce