zoukankan      html  css  js  c++  java
  • Java

    一、异步线程启动: new Thread

    new Thread(
    
        new Runnable() {
    
            @Override
    
            public void run() {
    
            // -- 这里是异步线程内的逻辑
    
     
    
            }
    
        }
    
    ).start();       

    二、Thread 缺点:

    • 每次新建,性能太差
    • 线程缺乏统一管理,可能无限制新建线程,占用资源

    线程池优点:

    • 降低资源消耗
    • 提高响应速度
    • 提高线程的可管理性

    三、五种线程池

    • newCachedThreadPool 创建可缓存线程池,线程池超过长度,灵活回收
    • newFixedThreadPool 创建定长线程池,可控最大并发数,超出线程在队列中等待
    • newScheduledThreadPool 创建定长线程池,支持定时及周期性执行任务
    • newSingleThreadExecutor 创建一个单线程化的线程池,用唯一工作线程执行任务,顺序执行
    • newWorkStealingPool jdk 1.8】创建多任务队列的线程池,可动态创建和关闭线程。

    newWorkStealingPool :适合使用很耗时的操作。是新的线程池类 ForkJoinPool 的扩展。

    其他四个线程池都是 ThreadPoolExecutor 的扩展。

    四、示例

    // 1.7 jdk

    newFixedThreadPool 固定大小线程池:

    代码示例:

    import java.util.concurrent.ExecutorService;
    
    import java.util.concurrent.Executors;
      ExecutorService fixedThreadPool = Executors.newFixedThreadPool(3);
    
      public void StringToTreeNode(final List<List<Map<String, String>>> dataList, final String userid) {
    
        fixedThreadPool.execute(new Runnable() {
    
          @Override
    
          public void run() {
    
          // ----- 这里写 线程内任务
    
          System.out.println(Thread.currentThread().getName());
    
        }
    
      });
    
    }

    // 1.8 jdk

    public static void main(String[] args) {
    
        ExecutorService pool = Executors.newFixedThreadPool(3);
    
        pool.execute(() -> System.out.println(Thread.currentThread().getName()) );
    
        pool.submit(() -> System.out.println(Thread.currentThread().getName()) );
    
    }

    execute() 与 submit() 区别:

    execute() 来自 public interface Executor { };只有一个方法, 入参为 Runnable,返回值为 void 【没有返回值】

    submit() 来自 public interface ExecutorService extends Executor { };有三个方法,入参为 Callable<T>, 可以为 Runnable ,返回值为 Future<T>;可以进行 Exception 处理,通过对Future.get() 进行抛出异常的捕获。

  • 相关阅读:
    zoj 2316 Matrix Multiplication 解题报告
    BestCoder7 1001 Little Pony and Permutation(hdu 4985) 解题报告
    codeforces 463C. Gargari and Bishops 解题报告
    codeforces 463B Caisa and Pylons 解题报告
    codeforces 463A Caisa and Sugar 解题报告
    CSS3新的字体尺寸单位rem
    CSS中文字体对照表
    引用外部CSS的link和import方式的分析与比较
    CSS样式表引用方式
    10个CSS简写/优化技巧
  • 原文地址:https://www.cnblogs.com/wgy1/p/10608839.html
Copyright © 2011-2022 走看看