⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 manager.java

📁 用java写一个线程池的例子,值得一看.
💻 JAVA
字号:
/**
 * Created by IntelliJ IDEA.
 * User: Administrator
 * Date: 2007-9-25
 * Time: 9:31:17
 * To change this template use Options | File Templates.
 */

import java.util.Vector;
public   abstract   class   Manager   {
          private   String   mThreadPoolName   =   null;
     // param type       连接线程类型 0 表示用余构造XML风控表达式以及合法性检查的线程
     //                               1 表示计算各个条目在风险检查后,获取的结果值
          private   int type = 0 ;
          private   int   mThreadPoolMaxSize   =   1;

           private Vector workers = new Vector();
          public   Manager()   {
          }

    /**
     *
     * @param name      连接池名称
     * @param poolMaxSize   连接池大小
     * @param intype       连接线程类型 0 表示用余构造XML风控表达式以及合法性检查的线程 1 表示计算各个条目在风险检查后,获取的结果值

     */
          public   Manager(String   name,   int   poolMaxSize , int intype )   {

                  mThreadPoolName   =   name;
                  type = intype ;
                  createWorker(name,   poolMaxSize);
                  mThreadPoolMaxSize   =   poolMaxSize;
          }
          private   void   createWorker(String name, int   poolMaxSize)    {
                          for   (int   i   =   0;   i   <   poolMaxSize;   i++)   {

                                  WorkerImpl   worker = null ;
                                  worker   =   new WorkerImpl(String.valueOf(i),this);
                                  worker.start();
                                  workers.addElement(worker);

                          }
                          System.out.println("ThreadPool create successful,num is "+poolMaxSize);
          }
         public   synchronized   WorkerImpl   getIdleWorker()   {
               WorkerImpl tmp  = null ;
               for ( int i = 0 ; i <= workers.size() -1 ; i++ ){
                  WorkerImpl currentThread = (WorkerImpl)workers.elementAt(i) ;
                  if (!currentThread.IsRunning()){
                      tmp = currentThread ;
                      break ;
                  }
               }
               return tmp ;
         }


         public String getManagerName(){
             return mThreadPoolName ;
         }

    /*
          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 int getActiveThread(){
               int num = 0 ;
               for ( int i = 0 ; i <= workers.size() -1 ; i++ ){
                  Worker currentThread = (Worker)workers.elementAt(i) ;
                      WorkerImpl tmp = (WorkerImpl)currentThread ;
                      if (tmp.IsRunning()) {
                          num+=1;
                      }
               }
               return num ;
          }

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -