线程池newFixedThreadPool的使用

转帖|其它|编辑:郝浩|2008-09-25 11:08:50.000|阅读 1085 次

概述:线程池newFixedThreadPool的使用

# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>

新的线程加入后,如果正在运行的线程达到了上限,则会阻塞,直到有了空闲的线程来运行。

import java.util.Random;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;

/**
 * 线程池newFixedThreadPool的使用。
 *
 * @author 赵学庆,Java世纪网(java2000.net)
 *
 */
public class ExecutorTest {
  public static void main(String args[]) {
    Random random = new Random();
    // 建立一个容量为3的固定尺寸的线程池
    ExecutorService executor = Executors.newFixedThreadPool(3);
    // 判断可是线程池可以结束
    int waitTime = 500;
    for (int i = 0; i < 10; i++) {
      String name = "线程 " + i;
      int time = random.nextInt(1000);
      waitTime += time;
      Runnable runner = new ExecutorThread(name, time);
      System.out.println("增加: " + name + " / " + time);
      executor.execute(runner);
    }
    try {
      Thread.sleep(waitTime);
      executor.shutdown();
      executor.awaitTermination(waitTime, TimeUnit.MILLISECONDS);
    } catch (InterruptedException ignored) {
    }
  }
}

class ExecutorThread implements Runnable {
  private final String name;
  private final int delay;

  public ExecutorThread(String name, int delay) {
    this.name = name;
    this.delay = delay;
  }

  public void run() {

    System.out.println("启动: " + name);
    try {
      Thread.sleep(delay);
    } catch (InterruptedException ignored) {
    }
    System.out.println("完成: " + name);
  }
}


标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@evget.com

文章转载自:DIY部落

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP