- 浏览: 232650 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
xchd:
分别在什么时候(情况下)用ThreadFactory、Exec ...
Executor线程池实例 -
mikey_5:
是不是没有写完啊
Executor线程池实例 -
xinyao:
楼主,你好,请问能给我发个源码吗,我要在一个页面能实时看到下载 ...
Android学习系列(19)--App离线下载 -
sdtzkj:
...
jasperReport 帮助文档 api -
shero_ys:
public class VrowsePicActivity ...
android handler 实现三步曲
Executor 是 java5 下的一个多任务并发执行框架(Doug Lea),可以建立一个类似数据库连接池的线程池来执行任务。这个框架主要由三个接口和其相应的具体类组成。Executor、 ExecutorService 和 ScheduledExecutorService 。
1 、 Executor 接口:是用来执行 Runnable 任务的;它只定义一个方法- execute(Runnable command);执行 Ruannable 类型的任务。
2 、 ExecutorService 接口: 继承Executor接口,提供了执行Callable任务和中止任务执行的服务。
3 、 ScheduledExecutorService 接口:继承 ExecutorService 接口,提供了按排程执行任务的服务。
4 、 Executors 类:为了方便使用, 建议使用 Executors的工具类来得到 Executor 接口的具体对象。
Executors 类有几个重要的方法,在这里简明一下:
1 、 callable(Runnable task): 将 Runnable 的任务转化成 Callable 的任务
2 、 newSingleThreadExecutor(): 产生一个 ExecutorService 对象,这个对象只有一个线程可用来执行任务,若任务多于一个,任务将按先后顺序执行。
3 、 newCachedThreadPool(): 产生一个 ExecutorService 对象,这个对象带有一个线程池,线程池的大小会根据需要调整,线程执行完任务后返回线程池,供执行下一次任务使用。
4 、 newFixedThreadPool(int poolSize): 产生一个 ExecutorService 对象,这个对象带有一个大小为 poolSize 的线程池,若任务数量大于 poolSize ,任务会被放在一个 queue 里顺序执行。
5 、 newSingleThreadScheduledExecutor(): 产生一个 ScheduledExecutorService 对象,这个对象的线程池大小为 1 ,若任务多于一个,任务将按先后顺序执行。
6 、 newScheduledThreadPool(int poolSize): 产生一个 ScheduledExecutorService 对象,这个对象的线程池大小为 poolSize ,若任务数量大于 poolSize ,任务会在一个 queue 里等待执行 。
有关Executor框架其它类的说明请参看JAVA 5 的 API文档
下面是几个简单的例子,用以示例Executors中几个主要方法的使用。
1、 Task.java 任务
2、 SingleThreadExecutorTest.java 单线程执行程序的测试
3、 CachedThreadPoolTest.java 线程池线程执行程序的测试
4、 FixedThreadPoolTest.java 线程池线程执行程序的测试(线程数固定)
5、 DaemonThreadFactory.java 守护线程生成工厂
6、 MaxPriorityThreadFactory.java 大优先级线程生成工厂
7、 MinPriorityThreadFactory.java 小优先级线程生成工厂
8、 ThreadFactoryExecutorTest.java 在自定义线程生成工厂下的测试
1、 Task.java 任务
package com.thread; //可执行任务 public class Task implements Runnable { // 中断信号 volatile boolean stop = false; // 该任务执行的次数 private int runCount = 0; // 任务标识 private int taskId; public Task(int taskId) { this.taskId = taskId; System.out.println("Create Task-" + taskId); } // 执行任务 public void run() { while (!stop) { try { Thread.sleep(10); } catch (InterruptedException e) { System.out.println("Task interrupted..."); } // 线程运行3次后,中断信号置为true if (++runCount == 3) stop = true; // 输出一些语句 System.out.println("" + Thread.currentThread().toString() + "\t\t\t\t execute Task-" + taskId + "'s " + runCount + "th run. "); } } }
2、 SingleThreadExecutorTest.java 单线程执行程序的测试
package com.thread; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; public class SingleThreadExecutorTest { public static void main(String[] args) { try { // 创建一个单线程执行程序 ExecutorService executorService = Executors.newSingleThreadExecutor(); for (int i =1; i <= 3; i++) { executorService.execute(new Task(i)); } executorService.shutdown(); } catch (Exception e) {} } }
3、 CachedThreadPoolTest.java 线程池线程执行程序的测试
package com.thread; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; public class CachedThreadPoolTest { public static void main(String[] args) { try { // 建新线程的线程池,如果之前构造的线程可用则重用它们 ExecutorService executorService = Executors.newCachedThreadPool(); for (int i =1; i <= 4; i++) { executorService.execute(new Task(i)); } executorService.shutdown(); } catch (Exception e) {} } }
4、 FixedThreadPoolTest.java 线程池线程执行程序的测试(线程数固定)
package com.thread; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; public class FixedThreadPoolTest { public static void main(String[] args) { try { // 创建固定线程数的线程池,以共享的无界队列方式来运行这些线程 ExecutorService executorService = Executors.newFixedThreadPool(2); for (int i =1; i <= 5; i++) { executorService.execute(new Task(i)); } executorService.shutdown(); } catch (Exception e) {} } }
5、 DaemonThreadFactory.java 守护线程生成工厂
package com.thread; import java.util.concurrent.ThreadFactory; public class DaemonThreadFactory implements ThreadFactory { //创建一个守护线程 public Thread newThread(Runnable r) { Thread t = new Thread(r); t.setDaemon(true); return t; } }
评论
发表评论
-
Android学习系列(19)--App离线下载
2011-08-13 11:40 1342Android学习系列(19)--App离线下载 ... -
Android学习系列(20)-App数据格式之解析Json
2011-08-13 11:28 1548JSON数据格式,在Android中被广泛运用于客户端和网络( ... -
Android学习系列(1)--为App签名(为apk签名)
2011-08-13 11:20 1622写博客是一种快乐,前提是你有所写,与人分享,是另一种快乐, ... -
Android学习系列(4)--App自适应draw9patch不失真背景
2011-08-13 11:16 2178做人要大度,海纳百川,做事要圆滑,左右逢源,这让我想到了编程也 ... -
Android自定义View之一:初探实例 .
2011-08-13 11:09 1429Android自定义View实现很简单 继承View,重写构 ... -
Android多媒体学:播放网络上的视频 .
2011-08-13 11:05 2030Android支持播放网络上的视频。在播放网络上的视频时,牵涉 ... -
Android多媒体学:利用AudioRecord类实现自己的音频录制程序 .
2011-08-13 11:02 5806AudioRecord类相对于MediaRecorder来说, ... -
Android多媒体:实现图像的编辑和合成 .
2011-08-13 10:59 2121package demo.camera; import ja ... -
自动完成框
2011-05-03 13:44 708请下载源码 -
读取sd卡照片
2011-05-03 13:43 1249请下载源码 -
UC菜单栏布局
2011-05-03 13:41 1091请下载附件 -
android handler 实现三步曲
2011-04-06 16:59 1386一. 要实现接口: public class VrowseP ... -
android 横竖屏切换
2011-03-25 14:33 1896①不理会。。②只竖屏 ... -
android 分辨率调试
2011-03-25 13:36 1835一:不同的layout Android ... -
android 图片内存溢出
2011-03-21 18:24 3047我的代码如下 is = new FileI ... -
android Exid 不可修改
2011-03-21 13:47 1217Android:只读EditText内容可滚动(禁止输入法)的 ... -
android 对话提示框大全
2011-03-21 12:34 3136Android 对话框(Dialog)大全 建立你自己的对话框 ... -
Android消息提示框和对话框
2011-03-21 12:29 1322在某些情况下需要向用户弹出提示消息,如显示错误信息,收到短消息 ... -
android tab 用法
2011-03-11 15:10 1693TabHost广泛运用于android程序中,在程序中运用Ta ... -
Android Intent 用法汇总
2011-03-08 18:17 1070显示网页 1. Uri uri = Uri.parse( ...
相关推荐
今天小编就为大家分享一篇关于springmvc配置线程池Executor做多线程并发操作的代码实例,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
文章目录一、关于线程池\进程池介绍1.1 池的概念1.2 池的划分1.3 线程池和进程池的区别1.5 进程池的...Executor模块4.2 Future模块4.3 模块其他实用函数五、程序实例5.1 进程池实例5.2 线程池实例5.3 同步和异步的实例...
主要介绍了详解Java线程池和Executor原理的分析的相关资料,这里提供实例及分析原理帮助大家理解这部分知识,需要的朋友可以参考下
此工具我不再更新,里面... 若想自定义线程池大小或独立控制,可调用newExecutor()实例化一个线程池 excAsync()执行一个异步方法 3、com.baijob.commonTools.thread.SyncQueue 阻塞队列,简化了JDK的BlockingQueue
另外,还可以使用Executor框架或线程池来管理线程。 3. Java中什么是抽象类? 答:抽象类是一种不能被实例化的类,只能作为其他类的基类。它可以包含抽象方法,用于定义子类必须实现的方法。 4. Java中什么是接口...
《Java并发编程的艺术》内容涵盖Java并发编程机制的底层实现原理、Java内存模型、Java并发编程基础、Java中的锁、并发容器和框架、原子类、并发工具类、线程池、Executor框架等主题,每个主题都做了深入的讲解,同时...
《Java并发编程的艺术》内容涵盖Java并发编程机制的底层实现原理、Java内存模型、Java并发编程基础、Java中的锁、并发容器和框架、原子类、并发工具类、线程池、Executor框架等主题,每个主题都做了深入的讲解,同时...
《Java并发编程的艺术》内容涵盖Java并发编程机制的底层实现原理、Java内存模型、Java并发编程基础、Java中的锁、并发容器和框架、原子类、并发工具类、线程池、Executor框架等主题,每个主题都做了深入的讲解,同时...
应用程序可以使用Executor框架来创建线程池 实现Runnable接口这种方式更受欢迎,因为这不需要继承Thread类。在应用设计中已经继承了别的对象的情况下,这需要多继承(而Java不支持多继承),只能实现接口。同时,...
4.2 实例封闭 4.2.1 Java监视器模式 4.2.2 示例:车辆追踪 4.3 线程安全性的委托 4.3.1 示例:基于委托的车辆追踪器 4.3.2 独立的状态变量 4.3.3 当委托失效时 4.3.4 发布底层的状态变量 4.3.5 示例:发布...
4.2 实例封闭 4.2.1 Java监视器模式 4.2.2 示例:车辆追踪 4.3 线程安全性的委托 4.3.1 示例:基于委托的车辆追踪器 4.3.2 独立的状态变量 4.3.3 当委托失效时 4.3.4 发布底层的状态变量 4.3.5 示例:发布...
java NIO的⼯工作原理 由⼀一个专⻔门的线程来处理理所有的 IO 事件,并负责分发。 事件驱动机制:事件到的时候触发,⽽而不不是同步的去监视事件。...应⽤用程序可以使⽤用Executor框架来创建线程池
4.2 实例限制 4.3 委托线程安全 4.4 向已有的线程安全类添加功能 4.5 同步策略的文档化 第5章 构建块 5.1 同步容器 5.2 发容器 5.3 阻塞队列和生产者一消费者模式 5.4 阻塞和可中断的方法 5.5 synchronizer 5.6 为...
4.2 实例限制 4.3 委托线程安全 4.4 向已有的线程安全类添加功能 4.5 同步策略的文档化 第5章 构建块 5.1 同步容器 5.2 发容器 5.3 阻塞队列和生产者一消费者模式 5.4 阻塞和可中断的方法 5.5 synchronizer 5.6 为...
4.2 实例限制 4.3 委托线程安全 4.4 向已有的线程安全类添加功能 4.5 同步策略的文档化 第5章 构建块 5.1 同步容器 5.2 发容器 5.3 阻塞队列和生产者一消费者模式 5.4 阻塞和可中断的方法 5.5 synchronizer 5.6 为...
第7章介绍了Java中的原子操作类,并给出一些实例。 第8章介绍了Java中提供的并发工具类,这是并发编程中的瑞士军刀。 第9章介绍了Java中的线程池实现原理和使用建议。 第10章介绍了Executor框架的整体结构和成员组件...