`
rain_2372
  • 浏览: 675789 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

一个java程序实现线程连接池功能

    博客分类:
  • java
阅读更多
import   java.util.LinkedList; 
  
  public   abstract   class   Manager   { 
  
          private   String   mThreadPoolName   =   null; 
  
          private   int   mThreadPoolMaxSize   =   1; 
  
          private   LinkedList   workers   =   new   LinkedList(); 
  
          public   Manager()   { 
          } 
  
          public   Manager(String   name,   int   poolMaxSize)   { 
                  mThreadPoolName   =   name; 
                  createWorker(name,   poolMaxSize); 
                  mThreadPoolMaxSize   =   poolMaxSize; 
          } 
  
          private   void   createWorker(int   poolMaxSize)   { 
                          for   (int   i   =   0;   i   <   poolMaxSize;   i++)   { 
                                  Worker   worker   =   new   ...Worker(this); 
                                  workers.addLast(worker); 
                          } 
          } 
  
          public   synchronized   Worker   getIdleWorker()   { 
                  return   (Worker)workers.removeFirst(); 
          } 
  
          public   synchronized   void   notifyFree(Worker   worker)   { 
                  if   (workers.size()   <   mThreadPoolMaxSize)   { 
                          workers.addLast(worker); 
                  }   else   { 
                          worker   =   null; 
                  } 
          } 
  
          public   int   getThreadPoolMaxSize()   { 
                  return   mThreadPoolMaxSize; 
          } 
  
          public   void   setThreadPoolMaxSize(int   threadPoolMaxSize)   { 
                  this.mThreadPoolMaxSize   =   threadPoolMaxSize; 
          } 
  
  } 
  
  线程抽象类 
  
  public   abstract   class   Worker   implements   Runnable   { 
  
          private   Manager   mManager   =   null; 
  
          private   Thread   mThread   =   null; 
      
          public   Worker()   { 
          } 
  
          public   Worker(String   threadName,   Manager   manager)   { 
                  mManager   =   manager; 
                  mThread   =   new   Thread(this,   threadName); 
                  init(); 
                  mThread.start(); 
          } 
  
          public   abstract   void   init(); 
  
          public   void   run()   { 
                  while   (true)   { 
                          waitForStart(); 
                          Worker   worker   =   mManager.getIdleWorker(); 
                          process(); 
                          isRunning   =   false; 
                          mManager.notifyFree(worker); 
                  } 
          } 
  
          public   abstract   void   process(); 
  
          public   void   start()   { 
                  isRunning   =   true; 
                  mManager.getIdleWorker(); 
                  notifyToStart(); 
          } 
  
          public   synchronized   void   waitForStart()   { 
                  try   { 
                          wait(); 
                  }   catch   (InterruptedException   ex)   { 
                  } 
          } 
  
          public   synchronized   void   notifyToStart()   { 
                  notify(); 
          } 
  
  } 
转http://www.itzhuyi.com/Item/Show.asp?d=10268&m=1
分享到:
评论

相关推荐

    java面试题

    请写一个java程序实现线程连接池功能? 122 84.13. 编一段代码,实现在控制台输入一组数字后,排序后在控制台输出; 122 84.14. 列出某文件夹下的所有文件; 123 84.15. java调用系统命令实现删除文件的操作; 123 ...

    JAVA面试题最全集

    请写一个java程序实现线程连接池功能? 44.给定一个C语言函数,要求实现在java类中进行调用。 45.如何获得数组的长度? 46.访问修饰符“public/private/protected/缺省的修饰符”的使用 47.用关键字final修饰一...

    java高性能数据库连接池V2.0

    数据库连接池,是一种相当实用的应用程序。它可以保存、维护及创建用户所需的数据库连接。从而使得用户得到一个连接的时间降低90%以上。大大提升了数据库访问的反应...使用一个守护线程维护这个连接池,完全自动化。

    java高性能数据库连接池V5.0

    数据库连接池,是一种相当实用的应用程序。它可以保存、维护及创建用户所需的数据库连接。...使用一个守护线程维护这个连接池,完全自动化。 版本说明:V5.0 。在网站后后实际应用中,发现了一些bug.

    强大的Java连接池类 for Java 附带源代码。

    我自行开发的一套Java平台的数据库连接池类,内部使用的是线程控制,其详细原理说明在CSDN进其将有所发布,届时也有源代码结实说明,该压缩文件中包含连接池运行的jar文件和其帮助手册中文版,(未竟严格代码测试) ...

    强大的Java连接池类 for .Net

    我自行开发的一套Java平台的数据库连接池类,内部使用的是线程控制,其详细原理说明在CSDN进其将有所发布,届时也有源代码结实说明,该压缩文件中包含连接池运行的jar文件和其帮助手册中文版,未竟严格代码测试) ...

    自己写的java数据库连接池

    数据库连接池用在网站后台架构中,非常有利于...为此,我编写了一个功能简单,但非常强大的。经过上千个多线程同时访问的数据库连接池程序 。 资源包括一个接口,两个实现。一个测试类。 大家可以使用它,修改它。

    R2高性能数据库连接池v1.5源码

    R2 jdbc连接池,用于java程序中jdbc连接池的配置管理,可应用于非web项目(纯java项目),全参数化配置。 应用时,先用rar打开jar包,拷贝r2.properties文件到class目录,并修改参数。 本包需要用到log4j,请在调用...

    R2数据库连接池高性能连接池v1.3

    R2 jdbc连接池,用于java程序中jdbc连接池的配置管理,可应用于非web项目(纯java项目),全参数化配置。 应用时,先用rar打开jar包,拷贝r2.properties文件到class目录,并修改参数。 本包需要用到log4j,请在...

    强大的Java连接池类 for Java

    我自行开发的一套Java平台的数据库连接池类,内部使用的是线程控制,其详细原理说明在CSDN进其将有所发布,届时也有源代码结实说明,该压缩文件中包含连接池运行的jar文件和其帮助手册中文版,(未竟严格代码测试) ...

    java的ftp多线程下载

    本程序是在原有基础上逐步完善的,第一版:http://download.csdn.net/detail/zpwmhx/4342943 第二版:http://download.csdn.net/detail/zpwmhx/4505209 详细文档请看: ...

    java开源包4

    BoneCP 是一个高性能的开源java数据库连接池实现库。它的设计初衷就是为了提高数据库连接池的性能,根据某些测试数据发现,BoneCP是最快的连接池。BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加...

    R2高性能数据库连接池v1.6源码

    R2 jdbc连接池,用于java程序中jdbc连接池的配置管理,可应用于非web项目(纯java项目),全参数化配置。 应用时,先用rar打开jar包,拷贝r2.properties文件到class目录,并修改参数。 本包需要用到log4j,请在...

    java开源包3

    BoneCP 是一个高性能的开源java数据库连接池实现库。它的设计初衷就是为了提高数据库连接池的性能,根据某些测试数据发现,BoneCP是最快的连接池。BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加...

    R2高性能数据库连接池v1.3源码

    R2 jdbc连接池,用于java程序中jdbc连接池的配置管理,可应用于非web项目(纯java项目),全参数化配置。 应用时,先用rar打开jar包,拷贝r2.properties文件到class目录,并修改参数。 本包需要用到log4j,请...

    java开源包11

    BoneCP 是一个高性能的开源java数据库连接池实现库。它的设计初衷就是为了提高数据库连接池的性能,根据某些测试数据发现,BoneCP是最快的连接池。BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加...

    java开源包6

    BoneCP 是一个高性能的开源java数据库连接池实现库。它的设计初衷就是为了提高数据库连接池的性能,根据某些测试数据发现,BoneCP是最快的连接池。BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加...

    JAVA上百实例源码以及开源项目

     Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多的网络程序,这是最基础的部分。 递归遍历矩阵 1个目标文件,简单! 多人聊天室 3...

    R2高性能数据库连接池v1.7源码

    R2 jdbc连接池,用于java程序中jdbc连接池的配置管理,可应用于非web项目(纯java项目),全参数化配置。 应用时,先用rar打开jar包,拷贝r2.properties文件到class目录,并修改参数。 本包需要用到log4j,请在调用...

    java开源包9

    BoneCP 是一个高性能的开源java数据库连接池实现库。它的设计初衷就是为了提高数据库连接池的性能,根据某些测试数据发现,BoneCP是最快的连接池。BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加...

Global site tag (gtag.js) - Google Analytics