• 9.Java5线程并发库的应用


     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 LiTaiQing
    10  *
    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                 @Override
    28                 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 " + j
    37                                 + " 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 //            @Override
    50 //            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             @Override
    63             public void run() {
    64                 System.out.println("bombing!");
    65             }
    66         }, 
    67         6, //时间
    68         2, //时间间隔
    69         TimeUnit.SECONDS);//单位
    70     }
    71     
    72     
    73 }
  • 相关阅读:
    c3p0 空指针异常 com.mchange.v2.resourcepool.CannotAcquireResourceException: A ResourcePool could not acquire a resource from its primary factory or source.
    HTML02单词
    HTML01
    java JVM虚拟机
    线程范围内的数据共享
    电话面试
    IDEA快捷键
    Intellij IDEA 生成返回值对象快捷键
    IDEA 快捷将创建main函数
    模块
  • 原文地址:https://www.cnblogs.com/litaiqing/p/4635379.html
Copyright © 2020-2023  润新知