疯狂java


您现在的位置: 疯狂软件 >> 新闻资讯 >> 正文

Java程序设计之线程池应用


 

   

  这里简单说一个线程池的小应用,从控制台输入线程访问的线程数量,输出输出工作的线程名,之前先构造一个包含了5条线程的对象。

  代码:

  复制代码

  import java.util.Scanner;

  import java.util.concurrent.ExecutorService;

  import java.util.concurrent.Executors;

  public class Threadd {

  public static void main(String[] args) {

  // TODO Auto-generated method stub

  Scanner s = new Scanner(System.in);

  ExecutorService es = Executors.newFixedThreadPool(5);//初始化五条线程,当使用的时候就使用,没有访问就挂起

  runn r = new runn();

  int i = Integer.parseInt(s.nextLine());//此处从控制台输入工作的线程数量

  while(--i>0){

  es.execute(r);

  }

  while(true){

  if(es.isTerminated()){

  System.out.println("线程任务已经都完成");

  break;

  }

  }

  es.shutdown();

  try {

  Thread.sleep(1000);

  if(es.isShutdown()){

  System.out.println("线程池已经销毁完毕。");

  }

  } catch (InterruptedException e) {

  // TODO Auto-generated catch block

  e.printStackTrace();

  }

  }

  }

  class runn implements Runnable{

  @Override

  public void run() {

  // TODO Auto-generated method stub

  System.out.println(Thread.currentThread().getName()+"正在运行");

  }

  }

  复制代码

  输入:7

  输出:pool-1-thread-1正在运行

  pool-1-thread-3正在运行

  pool-1-thread-2正在运行

  pool-1-thread-4正在运行

  pool-1-thread-2正在运行

  pool-1-thread-5正在运行