Chinaunix首页 | 论坛 | 博客
  • 博客访问: 499264
  • 博文数量: 1496
  • 博客积分: 79800
  • 博客等级: 大将
  • 技术积分: 9940
  • 用 户 组: 普通用户
  • 注册时间: 2008-09-09 13:22
文章分类

全部博文(1496)

文章存档

2011年(1)

2008年(1495)

我的朋友

分类:

2008-09-09 17:22:45

  本示例程序由三个类构成,第一个是TestThreadPool类,它是一个程序,用来模拟客户端的请求,当你运行它时,系统首先会显示线程池的初始化信息,然后提示你从键盘上输入字符串,并按下回车键,这时你会发现屏幕上显示信息,告诉你某个线程正在处理你的请求,如果你快速地输入一行行字符串,那么你会发现线程池中不断有线程被唤醒,来处理你的请求,在本例中,我创建了一个拥有10个线程的线程池,如果线程池中没有可用线程了,系统会提示你相应的警告信息,但如果你稍等片刻,那你会发现屏幕上会陆陆续续提示有线程进入了睡眠状态,这时你又可以发送新的请求了。

  第二个类是ThreadPoolManager类,顾名思义,它是一个用于管理线程池的类,它的主要职责是初始化线程池,并为客户端的请求分配不同的线程来进行处理,如果线程池满了,它会对你发出警告信息。

  最后一个类是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]   

【责编:Luzi】

--------------------next---------------------

阅读(155) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~