[学习笔记]Java代码构建一个线程池的自己学习写的实例,用这个你会更好的理解文章内容

 

//SimpleThread.java

public class SimpleThread extends Thread{

 private boolean runningFlag;
 private String argument;
 private int threadNumber;
 public boolean isRunning(){
  return runningFlag;
 }
 public synchronized void setRunning(boolean flag){
  runningFlag = flag;
  if(flag){
   this.notify();//唤醒在此对象监视器上等待的单个线程。
  }
 }
 
 public String getArgument() {
  return argument;
 }
 public void setArgument(String argument) {
  this.argument = argument;
 }
 public SimpleThread(int threadNumber){
  this.threadNumber=threadNumber;
  runningFlag = false;
  System.out.println("当前启动的是线程"+threadNumber);
  
 }
 
 public synchronized void run(){
  try{while(true){
   if(!runningFlag){
    this.wait();
   }else{
    System.out.println("正在处理您输入的../"" + getArgument() +"/"...已经处理完毕");
   
   sleep(5000);
   System.out.println("--线程号为"+this.getThreadNumber()+"休眠5秒钟--");
   setRunning(false);
   System.out.println("线程号为**"+this.getThreadNumber()+"**休眠结束");
   }
  }
  }catch(InterruptedException e){
   e.printStackTrace();
  }
 }
 public static void main(String[] args) {
  // TODO Auto-generated method stub

 }
 public int getThreadNumber() {
  return threadNumber;
 }
 public void setThreadNumber(int threadNumber) {
  this.threadNumber = threadNumber;
 }

 

 

 

-------------------

//

import java.util.*;
public class ThreadPoolManager {
   private int maxThread;
   public Vector vector;
   public void setMaxThread(int threadCount){
    maxThread=threadCount;
   }
   public ThreadPoolManager(int threadCount){
 setMaxThread(threadCount);
 System.out.println("....启动线程池.....");
 vector =new Vector();
 for(int i=1;i<=10;i++){
  SimpleThread thread =new SimpleThread(i);
  vector.addElement(thread);
  thread.start();
 }
   }
  
   public void process(String argument){
    int i;
    for(i=0;i<vector.size();i++){
     SimpleThread currentThread = (SimpleThread)vector.elementAt(i);
    if(!currentThread.isRunning()){
     System.out.println("..当前是第" + (i+1)+"个线程在处理您输入的 /""+ argument+"/"");
   currentThread.setArgument(argument);
   currentThread.setRunning(true);
   return;
    }
    }
    if(i == vector.size()){
     System.out.println("线程池的线程都在使用,没有多余的线程,请选择其他时间..");
    }
   }
  
}

----------------------

public class TextThreadPool {
      public static void main(String args[]){
      try{
       BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
       String s;
       ThreadPoolManager manager=new ThreadPoolManager(10);
       while((s=br.readLine())!=null){
        manager.process(s);
       }}catch(IOException e){}
      }
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值