首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

java程序兑现线程连接池功能本篇文章来源于:开发学院 http://edu.codepub.com 原文链接:http://edu.codepub.com

2012-11-03 
java程序实现线程连接池功能本篇文章来源于:开发学院 http://edu.codepub.com原文链接:http://edu.codepub

java程序实现线程连接池功能本篇文章来源于:开发学院 http://edu.codepub.com 原文链接:http://edu.codepub.com
import   java.util.LinkedList;  
   
  public   abstract   class   Manager   {  
   
          private   String   mThreadPoolName   =   null;  
   
          private   int   mThreadPoolMaxSize   =   1
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();  
          }  
   
  } 

热点排行