写一个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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值