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

    Java jdbc数据库连接池总结

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

    java实现连接池

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

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

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

    socket线程连接池实例

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

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

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

    java_jdbc数据库连接池总结

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

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

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

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

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

    java写的数据库连接池

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

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

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

    Java 连接池源码

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

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

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

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

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

    JAVA数据库连接池类

    本篇文章将深入解析一个自定义的JAVA数据库连接池类,帮助开发者更好地理解和运用这一关键技术。 首先,连接池的基本思想是预先创建一定数量的数据库连接,并存储在一个集合(如Vector)中,供应用程序按需获取和...

    轻量级java数据库连接池

    本项目提供了一个轻量级的Java数据库连接池实现,旨在简化开发过程,提高应用性能并降低资源消耗。下面将详细介绍这个轻量级Java数据库连接池的设计理念、工作原理以及如何使用。 1. **设计理念** 轻量级数据库...

    java连接池proxool

    Java连接池,特别是Proxool,是数据库管理中一个至关重要的概念,它提高了数据库操作的效率和性能。连接池在Java应用程序中起着桥梁的作用,它管理数据库连接,避免了频繁创建和销毁连接的开销。Proxool是Apache软件...

    用nio实现异步连接池

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

    mysql连接池java源码

    一个简单的Java连接池实现通常包括以下几个核心组件: - **ConnectionFactory**:创建数据库连接的工厂类,负责初始化连接。 - **PoolManager**:连接池管理器,维护连接池的生命周期,包括初始化、分配、回收和...

Global site tag (gtag.js) - Google Analytics