您现在的位置:首页 >> 基础 >> Java编程 >> 内容

Java并发之ThreadPoolExecutor 线程执行服务--Java学习网

时间:2016-10-26 12:44:46

  核心提示:package com.thread.test.thread; 23 import java.util.concurrent.ExecutorService; 4 import java.util.c...
 package com.thread.test.thread;
 2 
 3 import java.util.concurrent.ExecutorService;
 4 import java.util.concurrent.LinkedBlockingQueue;
 5 import java.util.concurrent.RejectedExecutionHandler;
 6 import java.util.concurrent.ThreadLocalRandom;
 7 import java.util.concurrent.ThreadPoolExecutor;
 8 import java.util.concurrent.TimeUnit;
 9 
10 /**
11  * ThreadPoolExecutor
12  * 通过线程池执行所提交的任务的ExecutorService,通常由Executors生成
13  * 执行高并发任务比较高效,因为减少了任务的穿行等待时间,同时很好的管理着执行需求的资源,包括线程,
14  * 通常,维护者一些基础的任务执行数据,例如已完成任务数量
15  *
16  * ThreadPoolExecutor有许多可调正的参数,可以适用于不同的用途,但是通常我们使用
17  * Executors#newCachedThreadPool 无容量限制,线程自动回收
18  * Executors#newFixedThreadPool 固定容量线程池
19  * Executors#newSingleThreadExecutor 单线程
20  * 等为许多通用场景预置了很多参数,
21  *
22  * Hello world!
23  *
24  */
25 public class ThreadPoolFactoryTest
26 {
27     public static void main( String[] args )
28     {
29         /**
30          * @ int corePoolSize:线程池中维护的线程数量,生命周期同线程池,除非设置了allowCoreThreadTimeOut
31          * @ int maximumPoolSize:允许的最大数量
32          * @ long keepAliveTime:允许的最大存活时间
33          * @ TimeUnit unit:单位
34          * @ BlockingQueue<Runnable> workQueue:存储等待执行任务,execute提交的Runnable类型任务
35          * @ RejectedExecutionHandler handler:线程阻塞,队列已满时执行的操作
36          */
37         ExecutorService enew = new ThreadPoolExecutor(5, 20, 0L,
38                 TimeUnit.SECONDS,
39                 new LinkedBlockingQueue<Runnable>(),
40         new RejectedExecutionHandler() {
41                     public void rejectedExecution(Runnable r, ThreadPoolExecutor executor) {
42                         System.out.println("this is the exception execution begin");
43                         executor.execute(r);
44                         System.out.println("this is the exception execution end");
45                     }
46                 });
47 
48         for (int i = 0; i < 100; i++) {
49             enew.execute(new Runnable() {
50                 public void run() {
51                     int l = ThreadLocalRandom.current().nextInt();
52                     System.out.println("task..." + l + "begin");
53                     try {
54                         Thread.sleep(2000);
55                         System.out.println("task..." + l + "end");
56                     } catch (InterruptedException e) {
57                         e.printStackTrace();
58                     }
59                 }
60             });
61         }
62         System.out.println("add end...");
63     }
64 }

Java免费学习   Java自学网 http://www.javalearns.com

关注微信号:javalearns   随时随地学Java

或扫一扫

随时随地学Java

作者:不详 来源:网络
    你是从哪里知道本网站的?
  • 网友介绍的
  • 百度搜索的
  • Google搜索的
  • 其它搜索过来的
  • 网址输错了进来的
  • 太忙了不记得了
共有评论 0相关评论
发表我的评论
  • 大名:
  • 内容:
  • java学习网(www.javalearns.com) © 2014 版权所有 All Rights Reserved.
  • Email:javalearns@163.com 站长QQ:1356121699 晋ICP备14003680号-3
  • java学习网部分内容来自网络或网友发布,如侵犯了您利益,请发邮件至:javalearns@126.com,我们尽快处理!
  • Java学习网
  • 网站统计
  • 晋公网安备 14042902000001号