`

写一个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连接池是应用程序管理数据库连接的一种机制,它...通过以上步骤,我们可以理解并实现一个简单的Java连接池。手动实现连接池可以加深对数据库连接管理的理解,但实际项目中,使用成熟的连接池组件会更加高效和可靠。

    Java jdbc数据库连接池总结

    连接池的基本工作原理是:当应用程序需要建立数据库连接时,连接池管理器会检查当前是否有可用的连接,如果有,则返回一个可用的连接对象;否则,连接池管理器将创建一个新的连接对象,并将其添加到连接池中。应用...

    java实现连接池

    C3P0则是一个更复杂的连接池实现,它不仅提供连接池服务,还包含了连接测试和自动回收过期连接的功能。C3P0的配置更加灵活,可以通过XML或Java代码进行。 HikariCP是近年来颇受欢迎的连接池实现,以其高速度和低...

    Java类实现数据库连接池(源码)

    在Java编程中,数据库连接池是一种管理数据库连接的机制,它允许程序重复使用一个已经存在的数据库连接,而不是每次需要时都创建新的连接。这大大提高了应用程序的性能和效率,因为建立和关闭数据库连接是耗时的操作...

    java写的数据库连接池

    本文将深入探讨数据库连接池的工作原理、重要性以及如何在Java中实现一个简单的连接池。 首先,数据库连接池是管理数据库连接的一种机制,它允许应用程序重复使用已建立的数据库连接,而不是每次需要时都创建新的...

    java手写数据库连接池

    数据库连接池是Java应用程序中非常重要的一个组件,它在提高应用性能、节省系统资源方面起着关键作用。本文将深入探讨如何使用Java手写数据库连接池,并基于maven进行项目构建。我们将分析四个核心类的功能,以及...

    socket线程连接池实例

    本实例探讨的是如何利用Java中的Socket对象以及线程连接池技术,特别是`GenericObjectPool`来提高程序性能和效率。首先,我们需要理解Socket和线程连接池的基本概念。 **Socket**: Socket是网络通信的一种接口,它...

    java手写连接池

    在Java中,连接池是一个管理数据库连接的系统,它预先创建一定数量的数据库连接,当应用程序需要时可以立即获取,用完后归还而不是关闭,从而避免了频繁地创建和销毁连接带来的性能开销。 首先,我们要了解数据库...

    Java网络编程-多线程,连接池

    Java网络编程是构建分布式应用程序的关键技术,特别是在服务器端开发中,多线程和连接池是其核心概念。本文将深入探讨这两个主题,并结合文件传输的实际应用进行讲解。 首先,我们来理解多线程。在Java中,多线程...

    一个比较好手写连接池

    标题提到的“一个比较好手写连接池”指的是一个由个人或团队独立编写的、用于管理数据库连接的类库,它模仿了Tomcat连接池(Apache Commons DBCP或HikariCP)的工作原理。这种自定义连接池对于小型项目来说,可能是...

    JAVA多线程实现数据库之间的数据互导、连接池、及多表插入数据库功能

    本主题聚焦于如何利用多线程实现在不同数据库间的数据互导,以及结合连接池技术来优化数据库操作,并实现多表插入功能。我们将深入探讨以下几个核心知识点: 1. **Java多线程**: - **线程创建**:Java提供了多种...

    java_jdbc数据库连接池总结

    解决多数据库服务器和多用户问题可以设计一个符合单例模式的连接池管理类,在连接池管理类的唯一实例被创建时读取一个资源文件,其中包含了不同的数据库连接信息。 Java JDBC 数据库连接池的优点包括: 1. 提高...

    JAVA 使用数据库连接池连接Oracle数据库全代码

    在Java程序中,我们创建`BasicDataSource`实例,并使用`Properties`类加载配置文件中的信息,然后将这些信息设置到`BasicDataSource`对象上。 ```java // 创建Properties对象并加载配置文件 Properties prop = new ...

    java面试题

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

    Java 连接池源码

    Java连接池是Java应用程序中管理数据库连接的一种机制,它的出现大大提高了数据库操作的性能和效率。连接池的基本思想是预先创建一定数量的数据库连接,并将它们保存在一个池中,当应用需要时可以从池中获取一个连接...

    数据库连接池的实现(java版本)

    通过以上分析可以看出,本文介绍的Java版数据库连接池实现相对简单,但涵盖了连接池的基本功能,包括连接的创建、管理、回收等。实际应用中,可能还需要考虑更多细节,例如连接超时处理、连接异常处理、线程安全等。...

    Java-jdbc数据库连接池总结.doc

    Java JDBC 数据库连接池技术是Java应用程序访问数据库的关键优化手段,尤其在Web应用程序中,它解决了传统JDBC连接方式存在的效率低下和资源浪费问题。Java JDBC(Java Database Connectivity)是Java语言与各种...

    基于java的数据库连接池技术的设计与实现

    虽然题目提供的部分内容无法直接翻译或解析为有意义的代码片段,但我们可以根据上述理论知识构造一段示例代码来展示如何使用Java实现一个简单的数据库连接池: ```java import java.sql.Connection; import java....

    用nio实现异步连接池

    ### 使用Java NIO实现异步连接池的关键知识点 #### 异步连接池的诞生背景与重要性 在现代Web应用程序开发中,为了提升系统性能和响应速度,常连接与连接池技术成为不可或缺的一部分。常连接是指一个持久存在的TCP...

Global site tag (gtag.js) - Google Analytics