- 浏览: 711624 次
- 来自: ...
文章分类
最新评论
-
ranguisheng:
可以加点注释,代码不便于阅读.
用java实现数据库连接池的一个简单示例 -
abcd880129:
这样写的话,还要用专门的下载工具,不然,只能下到一个为空的ex ...
ZK下载文件时,不在服务器生成文件直接下载 -
234369425:
同上,是20
java计算阶乘 -
CodeToMyLaw:
如果目录中含有中文呢?
[^\x00-\xff] 中文的 ...
js验证文件目录格式的正确性 -
yanzhoupuzhang:
加了,还是报那个错误!
org.apache.commons.dbcp.BasicDataSource的解决方法
转载:http://hi.baidu.com/triceratops/blog
public class ThreadPoolManager{ private static ThreadPoolManager poolManager; private ThreadPool pool; static final int POOL_MIN_SIZE = 1; static final int POOL_MAX_SIZE = 10; private ThreadPoolManager(){ pool = new ThreadPool(POOL_MIN_SIZE,POOL_MAX_SIZE); } public synchronized static ThreadPoolManager getInstance() { if(poolManager == null) poolManager = new ThreadPoolManager(); return poolManager; } //Get the working thread private ThreadWorker getWorker(){ return pool.getWorker(); } public void doService(String jobName){ getWorker().ready(jobName); } } =================================== import java.util.Stack; class ThreadPool{ private int poolMinSize; private int poolMaxSize; private int accumulator = 0; private Stack pool; ThreadPool(int poolMinSize,int poolMaxSize){ this.poolMinSize = poolMinSize; this.poolMaxSize = poolMaxSize; pool = new Stack(); initializePool(); } private void initializePool(){ ThreadWorker worker; for(int i=0;i<poolMinSize;i++){ worker = new ThreadWorker(this,i+1); pool.push(worker); accumulator++; worker.start(); } } public synchronized ThreadWorker getWorker(){ while(true){ if(!pool.isEmpty()){ return (ThreadWorker)pool.pop(); } else{ if(accumulator == poolMaxSize){ try{ wait(); //main thread hangs up } catch(InterruptedException e){ e.printStackTrace(); } } else{ ThreadWorker worker = new ThreadWorker(this); worker.start(); accumulator++; return worker; } } } } public synchronized boolean returnWorker(ThreadWorker worker){ if(pool.size() < poolMaxSize){ pool.push(worker); System.out.println(worker+" has been returned!"); notify(); return true; } return false; // The thread pool is full filled. } } =================================== class ThreadWorker extends Thread{ private ThreadPool pool; private int workerId; private String jobName; private static int newAddWorkerId = ThreadPoolManager.POOL_MIN_SIZE + 1; public ThreadWorker(ThreadPool pool){ this.pool = pool; workerId = newAddWorkerId++; } public ThreadWorker(ThreadPool pool,int workerId){ this.pool = pool; this.workerId = workerId; } public synchronized void ready(String jobName){ this.jobName = jobName; notify(); } public synchronized void run(){ while(true){ if(jobName == null){ try{ wait(); } catch(InterruptedException e){ e.printStackTrace(); } } Job job = new Job(jobName); //main function job.execute(workerId); jobName = null; if(!pool.returnWorker(this)) break; } } public String toString(){ return "Worker "+workerId; } } =================================== class Job { private String jobName; public Job(String jobName){ this.jobName = jobName; } public void execute(int workerId){ System.out.println("No."+workerId+" is doing the job '"+jobName+"'"); try{ Thread.sleep(500); } catch(InterruptedException e){ e.printStackTrace(); } } }
发表评论
-
Json,Gson,FastJson解析笔记
2015-06-13 17:31 935Json 1.将JavaBean转换成Json对象: pu ... -
String与InputStream互转的几种方法
2015-06-13 17:24 759/** * 利用BufferedReader ... -
Java压缩图片
2015-06-06 15:49 1120package com.yipai.ut ... -
HashMap的工作原理
2013-11-18 22:58 872本文由 ImportNew - 唐小娟 翻译自 Javarev ... -
一道多线程题目的解决方案
2013-08-03 17:24 827在iteye上看到的一道多线程的题目,参考了一下网友的实现,那 ... -
java socket 多线程网络传输多个文件
2013-06-25 14:57 883由于需要研究了下用 java socket 传输文件,由于需要 ... -
处理大数字
2011-04-30 13:40 1017/** * 处理大数字 * & ... -
生成随机数
2011-04-30 13:39 1243/** * 生成随机数 */ public cl ... -
转换数字的进制
2011-04-30 13:38 1323/** * * 转换数字的进制 */ pu ... -
数字的舍入
2011-04-30 13:37 1110/** * 数字的舍入 * */ publi ... -
格式化数字
2011-04-30 13:36 1171/** * 格式化数字的输出 * */ pu ... -
数字与其封装类之间的转换
2011-04-30 13:16 852/** * * 数字与其封装类之间的转换 * ... -
Adapter适配器模式
2011-04-24 21:38 881/** * Adapter适配器模式<br> ... -
Factory工厂模式
2011-04-24 21:36 908/** * 模式名称:工厂模式 * 模式特征:通过 ... -
Singleton单例模式
2011-04-24 21:35 1002public class SingletonA { ... -
排序类
2011-04-24 20:38 1018/** * 定义数字排序的 ... -
方法和变量在继承时的覆盖与隐藏
2011-04-24 20:30 979public class Parent2 { // ... -
类的加载顺序
2011-04-24 20:27 866/** * 父类 * */ public ... -
自定义形状类(继承的运用)
2011-04-10 17:18 1134/** * * 自定义图形的基类 */ p ... -
myeclipse8.6 注册码
2011-04-10 14:17 1175package com.springemail; i ...
相关推荐
并行流Parallel Stream我们先以一个简单的例子来开始-在任一个Collection类型上调用parallelStream方法-它将返回一个可能的并行流。这种流的默认处理流程是使用ForkJoinPool.commonPool(),这是一个被整个应用程序所...
NULL 博文链接:https://yulincqupt.iteye.com/blog/1673919
目标:Java中多线程技术是一个难点,但是也是一个核心技术。因为Java本身就是一个多线程语言。本人目前在给46班讲授Swing的网络编程--使用Swing来模拟真实的QQ实时聊天软件。因为涉及到Socket编程,所以一定会使用多...
我们也将遵循这个设计,实现一个简单的线程池类`SampleThreadPoolExecutor`,它继承自`Executor`接口。 在`SampleThreadPoolExecutor`类中,我们需要关注以下几个关键属性: 1. `wc`: 工作中的线程数量 2. `...
这篇博客"Java实现的线程池、消息队列功能"似乎提供了关于如何在Java中实现这两种功能的源码示例。尽管描述部分为空,但从提供的文件名我们可以推测,`CodeReader.java`和`SourcePathManager.java`可能包含了读取和...
例如,在代码示例中,使用Executors.newSingleThreadExecutor()创建了一个单线程线程池,并且通过pool.execute(t1);等方法提交了多个任务到线程池中执行。最后,通过调用pool.shutdown()方法来关闭线程池,释放相关...
1. SingleThreadExecutor:这个线程池仅使用一个线程来执行所有任务,确保任务按提交顺序执行,不会发生并发,适合于任务之间需要保持执行顺序的场景。 2. FixedThreadPool:固定容量的线程池,核心线程数等于最大...
Java线程池(ThreadPool)是Java并发编程中的一个重要概念,它可以帮助我们有效地管理和控制并发执行的任务,从而提高系统的效率和稳定性。线程池通过复用已存在的线程,避免了频繁创建和销毁线程带来的开销,同时也...
NULL 博文链接:https://technicalsearch.iteye.com/blog/2008646
Java代码中展示的`ThreadPool`类是作者实现的一个简单线程池示例,使用了`LinkedList`作为工作队列,`ThreadPool`类继承了`ThreadGroup`,这在JDK 1.4版本中是一种常见实现方式。但在JDK 1.5及以上版本,推荐使用`...
示例代码中的`ThreadPool`类是一个简单的线程池实现,包含一个`LinkedList`作为任务队列,以及若干个工作线程。工作线程通过继承`Thread`并实现`Runnable`接口来完成任务。在实际应用中,Java标准库提供的`...
Spring Boot 整合 FTPClient 线程池的实现示例 在本文中,我们将探讨如何在 Spring Boot 项目中整合 FTPClient 线程池的实现示例。FTPClient 是一个常用的 FTP 客户端库,而线程池则可以帮助我们减少频繁创建和销毁...
线程池是Java多线程编程中的一个重要概念,它是一种多线程处理形式,处理过程中将任务添加到队列,然后在创建线程后自动启动这些任务。线程池可以有效地控制运行的线程数量,当线程空闲时,会进行回收,这样可以减少...
在这样的实现中,`Vector`可以用来存储待执行的任务,每个任务通常是一个实现了`Runnable`接口的对象。线程池的核心操作包括: 1. **任务提交**:当有新任务需要执行时,将其添加到`Vector`中。 2. **任务调度**:...
在给出的代码示例中,我们看到了一个使用线程池实现的简单EchoServer程序。这个程序通过一个ExecutorService来处理网络通信中的多线程需求。ExecutorService是一个线程池接口,它继承了Executor接口,并提供了一些...
在这个"Java-Thread-Pool-example"中,我们将深入探讨Java线程池的实现、优势以及如何使用它。 Java中的线程池是通过`java.util.concurrent`包下的`ExecutorService`接口和`ThreadPoolExecutor`类来实现的。`...
Java线程池是一种高效管理线程资源的技术,它允许开发者创建一组可重用的工作线程,从而避免频繁地创建和销毁线程带来的性能开销。线程池在Java中主要通过`java.util.concurrent`包中的`ExecutorService`接口及其...
线程池是多线程编程中的一个重要概念,它是一种线程使用模式,通过维护一组可重用线程来提高程序的性能和响应速度。在Java中,我们可以使用`java.util.concurrent`包下的`ExecutorService`接口及其实现类,如`...
Java线程池的核心接口是`ExecutorService`,它是`Executor`接口的一个实现,提供了更丰富的线程管理功能。`ExecutorService`可以管理和调度任务,支持定时执行、定期执行以及并发数控制等高级特性。在Java中,线程池...