博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
9.Java5线程并发库的应用
阅读量:7072 次
发布时间:2019-06-28

本文共 2369 字,大约阅读时间需要 7 分钟。

1 import java.util.concurrent.ExecutorService; 2 import java.util.concurrent.Executors; 3 import java.util.concurrent.TimeUnit; 4  5 /** 6  * java5线程并发库的应用  7  * 线程池工具类 Executors 8  *  9  * @author LiTaiQing10  *11  */12 public class ThreadPoolTest {13 14     public static void main(String[] args) {15         //固定大小的线程池16         //ExecutorService threadPool = Executors.newFixedThreadPool(3);17         //缓存线程池18         //ExecutorService threadPool = Executors.newCachedThreadPool();19         /**20          * 单一线程池(如何实现线程死掉后重新启动)21          *     此线程池的特点正好解决上述问题,如果线程挂掉,此线程池会自动创建一个线程代替挂掉的线程22          */23         ExecutorService threadPool = Executors.newSingleThreadExecutor();24         for (int i = 1; i < 10; i++) {25             final int task = i;26             threadPool.execute(new Runnable() {27                 @Override28                 public void run() {29                     for (int j = 0; j < 10; j++) {30                         try {31                             Thread.sleep(20);32                         } catch (InterruptedException e) {33                             e.printStackTrace();34                         }35                         System.out.println(Thread.currentThread().getName()36                                 + " is looping of " + j37                                 + " for task of " + task);38                     }39                 }40             });41         }42         System.out.println("all of 10 tasks have committed!");43         //当所有任务结束后关闭线程池44         //threadPool.shutdown();45         //不管所有任务是否都已结束,直接关闭线程池46         //threadPool.shutdownNow();47         //计时器48 //        Executors.newScheduledThreadPool(3).schedule(new Runnable(){49 //            @Override50 //            public void run() {51 //                System.out.println("bombing!");52 //            }53 //        }, 54 //        6, //时间55 //        TimeUnit.SECONDS);//单位56         57         /**58          * 固定频率59          * 实现6秒以后炸,以后每2秒后爆炸一次60          */61         Executors.newScheduledThreadPool(3).scheduleAtFixedRate(new Runnable(){62             @Override63             public void run() {64                 System.out.println("bombing!");65             }66         }, 67         6, //时间68         2, //时间间隔69         TimeUnit.SECONDS);//单位70     }71     72     73 }

 

转载于:https://www.cnblogs.com/litaiqing/p/4635379.html

你可能感兴趣的文章
[Z]Computer Modern的故事
查看>>
Groovy闭包深入学习 - [203] 一直都有新高度 - ITeye技术网站
查看>>
[C#]DataTable常用操作总结【转】
查看>>
JdbcTemplate查询数据 三种callback之间的区别
查看>>
GBK
查看>>
Linux的nm查看动态和静态库中的符号
查看>>
hrbeu 哈工程 Who Is In Front of Me
查看>>
Linux命令行下常用svn命令
查看>>
一个form中对应多个动作
查看>>
注意!ASP.NET MVC 3 的一个 OutputCache 问题
查看>>
androidalertDialog无法显示按钮的bug
查看>>
跟我一起学习ASP.NET 4.5 MVC4.0(四)
查看>>
时钟周期/指令周期/机器周期/总线周期
查看>>
Python 开发者应该知道的 7 个开发库
查看>>
mysql索引之九:重复索引和冗余索引,索引和锁
查看>>
魔方阵
查看>>
【其他】对于本科毕业论文想说一些话
查看>>
调试core文件
查看>>
java中的IO操作总结(三)
查看>>
【JAVA学习笔记】个人设定
查看>>