java 构建的线程池(3)

来源:未知 责任编辑:责任编辑 发表时间:2014-01-06 18:08 点击:

它给ThreadPoolManager类的成员变量maxThread赋值,maxThread表示用于控制线程池中最大线程的数量。

第18行初始化一个数组vector,它用来存放所有的SimpleThread类,这时候就充分体现了JAVA语言的优越

性与艺术性:如果你用C语言的话,至少要写100行以上的代码来完成vector的功能,而且C语言数组只能容

纳类型统一的基本数据类型,无法容纳对象。好了,闲话少说,第19-24行的循环完成这样一个功能:先

创建一个新的SimpleThread类,然后将它放入vector中去,最后用thread.start()来启动这个线程,为什

么要用start()方法来启动线程呢?因为这是JAVA语言中所规定的,如果你不用的话,那这些线程将永远得

不到激活,从而导致本示例程序根本无法运行。
   下面我们再来看一下process()方法,第30-40行的循环依次从vector数组中选取SimpleThread线程

,并检查它是否处于激活状态(所谓激活状态是指此线程是否正在处理客户端的请求),如果处于激活状

态的话,那继续查找vector数组的下一项,如果vector数组中所有的线程都处于激活状态的话,那它会打

印出一条信息,提示用户稍候再试。相反如果找到了一个睡眠线程的话,那第35-38行会对此进行处理,

它先告诉客户端是哪一个线程来处理这个请求,然后将客户端的请求,即字符串argument转发给

SimpleThread类的setArgument()方法进行处理,并调用SimpleThread类的setRunning()方法来唤醒当前线

程,来对客户端请求进行处理。

  可能你还对setRunning()方法是怎样唤醒线程的有些不明白,那我们现在就进入最后一个类:

SimpleThread类,它的源代码如下:

  //SimpleThread.java
  1 class SimpleThread extends Thread
  2 {
  3 private boolean runningFlag;
  4 private String argument;
  5 public boolean isRunning()
  6 {
  7 return runningFlag;
  8 }
  9 public synchronized void setRunning(boolean flag)
  10 {
  11 runningFlag = flag;
  12 if(flag)
  13 this.notify();
  14 }
  15
  16 public String getArgument()
  17 {
  18 return this.argument;
  19 }
  20 public void setArgument(String string)
  21 {
  22 argument = string;
  23 }
  24
  25 public SimpleThread(int threadNumber)
  26 {
  27 runningFlag = false;
  28 System.out.println("thread " + threadNumber + "started.");
  29 }
  30
  31 public synchronized void run()
  32 {
  33 try{
  34 while(true)
  35 {
  36 if(!runningFlag)
  37 {
  38 this.wait();
  39 }
  40 else
  41 {
  42 System.out.println("processing " + getArgument() + "... done.");
  43 sleep(5000);
  44 System.out.println("Thread is sleeping...");
  45 setRunning(false);
  46 }
  47 }
  48 } catch(InterruptedException e){
  49 System.out.println("Interrupt");
  50 }
  51 }//end of run()
  52 }//end of class SimpleThread

  如果你对JAVA的线程编程有些不太明白的话,那我先在这里简单地讲解一下,JAVA有一个名为Thread

的类,如果你要创建一个线程,则必须要从Thread类中继承,并且还要实现Thread类的run()接口,要激活

发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
用户名: 验证码:点击我更换图片
最新评论 更多>>

推荐热点

  • Java编程语言的八大优点
  • JVM对象生命周期详细介绍
  • Java平台上的CRM系统
  • Java 算数测试小程序
  • Command(命令模式)
  • Java环境 使用Resin在NT环境下配置JSP环境
  • Java 一个简单的画图程序
  • Java 日历的小程序
  • Java 统计代码的小工具
网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
Copyright © 2008-2015 计算机技术学习交流网. 版权所有

豫ICP备11007008号-1