- 浏览: 565342 次
- 性别:
- 来自: 南京
文章分类
- 全部博客 (350)
- Sybase (30)
- SQL SERVER2005 (14)
- 数据库 (27)
- SSH框架 (27)
- WebService (21)
- 下载-软件收藏 (15)
- 随笔-日常使用 (9)
- Flex 相关 (13)
- Linux (11)
- Web (64)
- XML相关 (9)
- Socket相关 (1)
- Elipse (3)
- 统计报表 (11)
- 线程相关 (3)
- Java相关 (37)
- JAVASCRIPT (19)
- JAVA反射 (3)
- JSP标签 (3)
- 随笔-其他 (2)
- 随笔-设计模式 (3)
- 随笔-架构师相关 (1)
- 下载-源码 (7)
- 下载-帮助文档 (1)
- 下载-插件 (6)
- 技术-.NET (2)
- 技术-Excel VBA (8)
- 应用-地图相关 (2)
- 应用-GSM短信猫 (5)
- 应用-单点登录 (3)
- Android相关 (3)
最新评论
-
sucheng2016:
发现jconn4.jar 里面有getBlob(String) ...
Sybase15驱动包的问题com.sybase.jdbc3.jdbc.SybDriver -
sucheng2016:
java.lang.UnsupportedOperationE ...
Sybase15驱动包的问题com.sybase.jdbc3.jdbc.SybDriver -
ok123zxx:
没下文了吗
通过 Tomcat Advanced I/O 获得高性能的 Ajax tocmat6+CometProcessor -
q1345111:
大家这个问题 尚未完成方法 com.sybase.jdbc3. ...
Sybase15驱动包的问题com.sybase.jdbc3.jdbc.SybDriver -
bdk82924:
heshujing217187 写道问题同1楼一样,求解!换j ...
Sybase15驱动包的问题com.sybase.jdbc3.jdbc.SybDriver
转:http://guoliangqi.iteye.com/blog/630086
线程池主类:
Java代码
- import java.util.concurrent.LinkedBlockingQueue;
- import java.util.concurrent.ThreadPoolExecutor;
- import java.util.concurrent.TimeUnit;
- public class DataHandlerThreadPool {
- //核心线程数量,即初始化线程池的启动线程数量
- private static final int corePoolSize = 10;
- //最大线程数量
- private static final int maximumPoolSize = 20;
- //线程的存活时间,即完成任务后多久可再使用
- private static final int keepAliveTime = 300;
- //等待队列的长度
- private static final int workQueueSize = 30;
- private static ThreadPoolExecutor exec = null;
- public static ThreadPoolExecutor getDHThreadPool() {
- if (exec == null) {
- //ThreadPoolExceptionHandler表示当线程池处理不了规定任务时的异常处理方式。
- exec = new ThreadPoolExecutor(corePoolSize, maximumPoolSize, keepAliveTime, TimeUnit.MILLISECONDS,
- new LinkedBlockingQueue(workQueueSize), new ThreadPoolExceptionHandler());
- }
- return exec;
- }
- }
import java.util.concurrent.LinkedBlockingQueue; import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.TimeUnit; public class DataHandlerThreadPool { //核心线程数量,即初始化线程池的启动线程数量 private static final int corePoolSize = 10; //最大线程数量 private static final int maximumPoolSize = 20; //线程的存活时间,即完成任务后多久可再使用 private static final int keepAliveTime = 300; //等待队列的长度 private static final int workQueueSize = 30; private static ThreadPoolExecutor exec = null; public static ThreadPoolExecutor getDHThreadPool() { if (exec == null) { //ThreadPoolExceptionHandler表示当线程池处理不了规定任务时的异常处理方式。 exec = new ThreadPoolExecutor(corePoolSize, maximumPoolSize, keepAliveTime, TimeUnit.MILLISECONDS, new LinkedBlockingQueue(workQueueSize), new ThreadPoolExceptionHandler()); } return exec; } }
线程池异常处理类:
Java代码
- import java.util.concurrent.RejectedExecutionHandler;
- import java.util.concurrent.ThreadPoolExecutor;
- public class ThreadPoolExceptionHandler implements RejectedExecutionHandler {
- public void rejectedExecution(Runnable r, ThreadPoolExecutor executor) {
- System.out.println("线程池出现异常!");
- }
- }
import java.util.concurrent.RejectedExecutionHandler; import java.util.concurrent.ThreadPoolExecutor; public class ThreadPoolExceptionHandler implements RejectedExecutionHandler { public void rejectedExecution(Runnable r, ThreadPoolExecutor executor) { System.out.println("线程池出现异常!"); } }
任务实例,只需要实现Runnable接口就行
Java代码
- public class ThreadPoolTask implements Runnable {
- public void run() {
- System.out.println("在这里执行业务逻辑和要执行的方法");
- }
- }
public class ThreadPoolTask implements Runnable { public void run() { System.out.println("在这里执行业务逻辑和要执行的方法"); } }
执行测试类:
Java代码
- import java.util.concurrent.ThreadPoolExecutor;
- public class TestMain {
- /**
- * @param args
- */
- public static void main(String[] args) {
- ThreadPoolExecutor executor = DataHandlerThreadPool.getDHThreadPool();
- //适当控制i的循环次数,可以看到打印出的信息,有的是执行业务逻辑,有的是在线程异常处理类里
- for (int i = 0; i < 100; i++) {
- executor.execute(new ThreadPoolTask());
- }
- }
- }
import java.util.concurrent.ThreadPoolExecutor; public class TestMain { /** * @param args */ public static void main(String[] args) { ThreadPoolExecutor executor = DataHandlerThreadPool.getDHThreadPool(); //适当控制i的循环次数,可以看到打印出的信息,有的是执行业务逻辑,有的是在线程异常处理类里 for (int i = 0; i < 100; i++) { executor.execute(new ThreadPoolTask()); } } }
exec = new ThreadPoolExecutor(corePoolSize, maximumPoolSize,
keepAliveTime, TimeUnit.MILLISECONDS,
new LinkedBlockingQueue(workQueueSize),
new ThreadPoolExceptionHandler());
实例化线程池的方法,在倒数第二个参数 new LinkedBlockingQueue(workQueueSize)可以设置等待队列的形式,有无限队列,有规定队列,有固定的数组等等。
发表评论
-
Jav解析soap的xml
2015-05-17 21:13 799解析xml import org.dom4j.Docume ... -
Json转换利器Gson
2013-12-13 08:59 524转: http://blog.csdn.net/lk_blog ... -
asm jar包冲突的问题和解决方法(转)
2013-11-03 01:48 1155asm jar包冲突的问题和解决方法 在用Spring+Hi ... -
Spring ehCache 示例
2013-04-28 15:46 780http://blog.chinaunix.net/uid-2 ... -
将json字符串转换为bean (json-lib)
2013-04-26 15:26 1014Json-lib可以将Java对象转成json格式的字符串,也 ... -
QPID学习
2013-03-09 14:13 4447最近在看QPID 首先看下QPID是什么,他是个消息队列,用 ... -
短网址的原理和实现
2013-01-22 15:36 15376微博上经常会看到类似 http://t.cn/Afafhe 这 ... -
JAVA实现栈(stack)与堆(heap)
2013-01-11 17:22 923Java实现 栈(stack)与堆(heap) 上次写过一 ... -
Tomcat7.0下实现的websocket 代码
2013-01-07 19:37 991测试环境: JDK1.6 Tomcat7.0.30 ... -
java IO写入文件效率——几种方法比较
2012-11-02 11:17 1082总结: 如果按字符和字节来分类,除方法1和2,其余都是按字符 ... -
Apache自带压力测试工具AB的使用方法
2012-09-18 11:26 1311使用例子: 1、打开dos界面,开始-》运行-》输入“cmd ... -
MyEclipse6.01注册码,Java源码
2012-07-02 16:12 1102不用为注册码犯愁了.. 下面是在网上搜索到的一段代码 ,分享给 ... -
ant解决OutOfMemoryError 或者Error starting modern compiler
2012-05-11 16:36 1391起因:在执行ant脚本的时候 ,报的错误是 Error st ... -
多线程的同步处理(待续)
2012-02-21 13:03 0多线程的同步处理(待续) -
在Web中部署定时器或者过滤器(待续)
2012-02-22 08:26 904在Web中部署定时器(待续) -
JAVA线程的几种写法(待续)
2012-02-21 13:00 0JAVA线程的几种写法(待续) -
JDK1.6中自带的线程池(待续)
2012-02-21 12:59 0JDK1.6中自带的线程池(待续) -
Java中使用Json 用到的jar包
2012-02-22 08:25 1382操作json开源的Jar包很多 ,那么多的jar选择哪个好呢 ... -
JsonUtils 类,将任意数据格式转换为Json格式
2012-02-21 09:12 1815package json; ... -
Java生成二维码或一维条形码(待续 未完)
2012-02-13 08:22 1765Java生成二维码或一维条形码(待续) 前段时间用了“ ...
相关推荐
JDK自带线程池分析 JDK 自带线程池是 Java 语言中用于管理和执行线程的工具,旨在提高多线程编程的效率和灵活性。本文将详细介绍 JDK 自带线程池的组成、创建方法、优点和常见应用场景。 多线程技术 多线程技术是...
jdk自带线程池实例详解 jdk自带的线程池是Java开发中一个非常重要的概念,特别是在多线程编程中。线程池是线程的容器,每次只执行额定数量的线程,线程池就是用来管理这些额定数量的线程。下面我们来详细了解jdk...
“相关的性能参数已经优化好”意味着开发者可能已经调整了Tomcat的默认配置,例如线程池大小、内存分配、连接超时等关键参数,以提高其在特定工作负载下的性能表现。这有助于在服务器高负载下保持良好的响应速度和...
5. `jconsole`:JDK自带的JVM监控工具,提供性能分析和内存管理等功能。 6. `jmap`:用于查看堆内存详细信息,辅助诊断内存泄漏问题。 四、JDK 1.6的开发实践 在实际开发中,JDK 1.6广泛应用于企业级应用、桌面...
Java线程池是一种高效利用系统资源的机制,它允许开发者预先配置一定数量的线程,以便在...通过对JDK自带的`ThreadPoolExecutor`源码的学习,我们可以更深入地了解线程池的工作细节,以便更好地利用这一强大的工具。
实现原理为采用Socket原理、线程池、输入输出流及简单的HTTP协议,麻烦虽小,五脏俱全,...JAR编译的JDK版本1.6,至少要JDK1.5以上,因为其中用到JDK自带的线程池,内附源码,用户可以自已将源码再打包。 下载路径为:
Java 的官方文档——JDK API 文档提供了所有类、接口、方法以及构造器等的详细说明,是学习和使用 Java 的重要资源之一。 ### 2. JDK API 1.6 版本概述 JDK(Java Development Kit)是开发 Java 应用程序的基础...
普通JDK自带的线程池时无法实现线程池的自动切换,基于监控与上下文自动切换的需求,封住了一套taxi开头的线程池,接入方式很简单,它的使用方式与Jdk的使用基本方式一致,只需在对应的类前加一个Taxi,现将对应方式...
JDK提供了一系列的线程池实现,包括`ThreadPoolExecutor`、`ScheduledThreadPoolExecutor`以及`Executors`工厂类。`ThreadPoolExecutor`是线程池的核心实现,它接受五个参数进行初始化: 1. `corePoolSize`: 核心...
RejectedExecutionHandler 的实现 JDK 自带的默认有 4 种: * AbortPolicy:丢弃任务,抛出运行时异常 * CallerRunsPolicy:由提交任务的线程来执行任务 * DiscardPolicy:丢弃这个任务,但是不抛异常 * ...
- **使用JDK自带线程池的阻塞服务器**:进一步优化线程管理。 - **NIO基础知识**:介绍Buffer、Channel、Selector等基本概念。 - **基于NIO的阻塞服务器**:利用NIO特性改进阻塞模式。 - **基于NIO的非阻塞...
MyEclipse自带的JDK可能不是你想要使用的版本,或者你可能希望针对特定项目使用不同的JDK。在Tomcat配置界面,选择“JRE”选项卡,点击“Add”按钮。在弹出的窗口中,浏览并选择你系统中安装的JDK路径,然后点击...
这涉及到使用JDK自带的工具如`jstat`、`jmap`、`jhat`和`jfr`(Java飞行记录器)等。 4. **垃圾回收**:垃圾回收是Java性能管理的重要方面,指南提供了关于不同垃圾收集器的详细信息,如G1、Shenandoah、ZGC等,...
4. **性能监控工具**:熟悉JDK自带的JConsole、VisualVM和JProfiler等工具,用于实时监控JVM的运行状态,包括内存使用、线程状态、CPU消耗等,以及如何通过这些工具进行问题定位。 5. **类加载机制**:掌握双亲委派...
在介绍Java泥潭问题时,文档提到了Runtime.getRuntime().exec()的不稳定性和JDK自带的Timer类的使用场合,以及池的合理设计,例如对象池、线程池和连接池的设计。还特别提醒了JDK1.5线程池和Timer使用的陷阱。 最后...
常用的线程池有两种:JDK 自带的和 Spring 线程池。 在本文中,我们使用 Spring API 来构建一个线程池。线程池可以避免线程无限制的被创建,避免应用资源无限制的被占用导致的系统宕掉的问题。 三、异常的捕获 当...
Java自带的并发框架通过提供高级的并发工具和类,使开发者能够更安全、更高效地编写多线程程序,避免了直接操作底层并发原语带来的复杂性和潜在风险。通过理解和熟练使用这些工具,我们可以构建出更健壮、更具伸缩性...
3. **使用JDK自带线程池的阻塞服务器**:通过线程池管理线程资源,提高了资源利用率,减少了线程创建销毁的开销。 4. **NIO基础知识**:介绍了NIO的基本概念,包括缓冲区(Buffer)、通道(Channel)、选择器(Selector)...
5. **JVM调优工具**:学习使用JDK自带的JConsole、VisualVM、JFR等工具进行性能监控和分析,以及如何通过JVM日志分析系统瓶颈。 6. **类加载机制**:理解类加载过程(加载、验证、准备、解析、初始化),探讨双亲...