java 构建的线程池(2)
线程池,并为客户端的请求分配不同的线程来进行处理,如果线程池满了,它会对你发出警告信息。
最后一个类是SimpleThread类,它是Thread类的一个子类,它才真正对客户端的请求进行处理,
SimpleThread在示例程序初始化时都处于睡眠状态,但如果它接受到了ThreadPoolManager类发过来的调度
信息,则会将自己唤醒,并对请求进行处理。 
   首先我们来看一下TestThreadPool类的源码: 
  //TestThreadPool.java 
  1 import java.io.*; 
  2 
  3 
  4 public class TestThreadPool 
  5 { 
  6 public static void main(String[] args) 
  7 { 
  8 try{ 
  9 BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 
  10 String s; 
  11 ThreadPoolManager manager = new ThreadPoolManager(10); 
  12 while((s = br.readLine()) != null) 
  13 { 
  14 manager.process(s); 
  15 } 
  16 }catch(IOException e){} 
  17 } 
  18 } 
  由于此测试程序用到了输入输入类,因此第1行导入了JAVA的基本IO处理包,在第11行中,我们创建了
一个名为manager的类,它给ThreadPoolManager类的构造函数传递了一个值为10的参数,告诉
ThreadPoolManager类:我要一个有10个线程的池,给我创建一个吧!第12行至15行是一个无限循环,它用
来等待用户的键入,并将键入的字符串保存在s变量中,并调用ThreadPoolManager类的process方法来将这
个请求进行处理。
下面我们再进一步跟踪到ThreadPoolManager类中去,以下是它的源代码:
  //ThreadPoolManager.java 
  1 import java.util.*; 
  2 
  3 
  4 class ThreadPoolManager 
  5 { 
  6 
  7 private int maxThread; 
  8 public Vector vector; 
  9 public void setMaxThread(int threadCount) 
  10 { 
  11 maxThread = threadCount; 
  12 } 
  13 
  14 public ThreadPoolManager(int threadCount) 
  15 { 
  16 setMaxThread(threadCount); 
  17 System.out.println("Starting thread pool..."); 
  18 vector = new Vector(); 
  19 for(int i = 1; i <= 10; i++) 
  20 { 
  21 SimpleThread thread = new SimpleThread(i); 
  22 vector.addElement(thread); 
  23 thread.start(); 
  24 } 
  25 } 
  26 
  27 public void process(String argument) 
  28 { 
  29 int i; 
  30 for(i = 0; i < vector.size(); i++) 
  31 { 
  32 SimpleThread currentThread = (SimpleThread)vector.elementAt(i); 
  33 if(!currentThread.isRunning()) 
  34 { 
  35 System.out.println("Thread "+ (i+1) +" is processing:" + 
  argument); 
  36 currentThread.setArgument(argument); 
  37 currentThread.setRunning(true); 
  38 return; 
  39 } 
  40 } 
  41 if(i == vector.size()) 
  42 { 
  43 System.out.println("pool is full, try in another time."); 
  44 } 
  45 } 
  46 }//end of class ThreadPoolManager 
  我们先关注一下这个类的构造函数,然后再看它的process()方法。第16-24行是它的构造函数,首先
	
相关新闻>>
- 发表评论
 - 
				
 
- 最新评论 进入详细评论页>>
 






