以前很少写这些文档,可后来发现自己所了解的东西慢慢的忘记了好多,所以准备整理一下,不知道说的对不对,如果哪里有不对的地方,请谅解并给出更正,3Q。话不多说直接举例子;
以下为任务的一个池应用,按给出的时间运行事务。
ExecutorService 池应用:
public static void main(String[] args) { MessageJob message = new MessageJob(); ExecutorService pool = Executors.newSingleThreadScheduledExecutor(); while(true){ pool.execute(message); // 将类放到任务池中 try { pool.awaitTermination(10,Tunit.SECONDS);//为每10秒执行一次MessageJob 类 } catch (InterruptedException e) { e.printStackTrace(); } finally{ if(pool.isShutdown()){ pool.shutdown(); // 关闭池 } } }
以下为处理业务的类
public class MessageJob implements Runnable{ @Override public void run() { System.out.println(Thread.currentThread().getName());// 打印线程名 } }
MessageJob 类一定要继承Runnable接口,这样execute()方法才能执行MessageJob方法。
ThreadPoolExecutor池应用:
ThreadPoolExecutor(int corePoolSize, int maximumPoolSize,long keepAliveTime, TimeUnit unit,
BlockingQueue<Runnable> workQueue,RejectedExecutionHandler handler)
corePoolSize: 线程池维护线程的最少数量
maximumPoolSize:线程池维护线程的最大数量
keepAliveTime: 线程池维护线程所允许的空闲时间
unit: 线程池维护线程所允许的空闲时间的单位
workQueue: 线程池所使用的缓冲队列
handler: 线程池对拒绝任务的处理策略
/** *如果任务线程越过最大线徎,将保存到队列中,如果队列设置不够大,越出队列会报异常 * * */ public static void main(String[] args){ BlockingQueue<Runnable> queue = new LinkedBlockingDeque<Runnable>();// 无限大的队列 // 10条线程,最大20,10秒无动作释放线程 ThreadPoolExecutor executor = new ThreadPoolExecutor(10,20,10,TimeUnit.SECONDS,queue); MessageJob message[] = new MessageJob[10]; for(int i = 0 ; i < 10 ; i++){ message[i] = new MessageJob(); // 每循环一次实列化一次 executor.execute(message); } if (executo.isShutdown()) { executo.shutdown(); } }
以下为处理业务的类
public class MessageJob implements Runnable{ @Override public void run() { System.out.println(Thread.currentThread().getName());// 打印线程名 } }
相关推荐
本案例详细介绍了JDK自带线程池,与spring的线程池相比,其更好,希望对大家有帮助
在最近做的一个项目中,需要大量的使用到多线程和线程池,下面就java自带的线程池和大家一起分享
JDK1.5线程池源码及详细注释 深入研究java线程原理
JDK1.5的线程池讲解,示例代码,很精辟~
利用jdk自带算法实现的AES加解密工具类及Base64编解码工具类、 文件操作工具类、aes扩展无限制权限策略文件等。 在jdk1.7环境亲测通过。
资源很不错
介绍一个通用多线程服务模块。是利用jdk线程池,多线程并行处理多任务,以提高执行效率。
JDK自带xml解析器dom+sax JDK自带xml解析器dom+sax JDK自带xml解析器dom+sax
JDK自带调试工具doc JDK自带调试工具doc JDK自带调试工具doc
使用jdk自带的jar工具打jar包 采用命令行的方式 方便 快捷
JDK自带的jarsigner签名工具帮助文档,指导大家用自带的JDK通过控制台签名apk;主要指令如下:jarsigner -verbose -keystore [您的签名存放路径]-signedjar [签名后的文件名] [未签名的文件名] [您的证书名称]
JDK1.5中的线程池(ThreadPoolExecutor)使用简介
详细介绍了jdk自带的工具的使用方法等 JDK自带工具分析 1 1、工具分类概括: 2 1.1、基本工具 2 1.2、安全工具 3 1.3、Java国际化工具 3 1.4、远程方法调用工具 3 1.5、Java IDL and RMI-IIOP 工具 3 1.6、Java 部署...
NULL 博文链接:https://samjavaeye.iteye.com/blog/938657
使用jdk1.5 实现的线程池. 可以定制人物和其它特性. 下载后可以自己进行相关功能完善. 欢迎加QQ:934547801一起讨论
JDK7多线程部分类(接口)关系图,根据官网得出
Java Diary - JDK自带的java数据库,并且是完全的关系型书库据----Derby
JDK自带VM分析工具jps,jstat,jmap,jconsole
主要介绍了JDK线程池和Spring线程池的使用实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
如何更换Eclipse项目中的JDK自带jre图解。有很多java初学者导别人的项目时,常常会遇到项目报红,这是因为jdk位置发生了改变。除非你的jdk位置跟创建这个项目的人的位置一致。这个文档就是解决更换jdk,换成自己的jdk...