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



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值