请写一个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://heisetoufa.iteye.com

如果发现本文有误,欢迎批评指正

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值