`

写一个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();      
          }      
       
  }     

 

分享到:
评论

相关推荐

    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数据库连接池

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

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

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

    强大的Java连接池类 for .Net

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

    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的支持,这二者加...

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

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

    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...

    java开源包9

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

    java开源包101

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

Global site tag (gtag.js) - Google Analytics