zoukankan      html  css  js  c++  java
  • java8多线程的lambda

    Lambda表达式

    lambda表达式,实际上就是匿名函数。

    格式如下:
    ()里面是函数的参数,中间是箭头, {}是函数的代码块,{}包含了函数的执行以及返回结果。

    ()->{}
    

    新建线程

    • 不使用lambda:
      Runnable runnable = new Runnable() {
          @Override
          public void run() {
              System.out.println("执行run()方法.");
          }
      };
    

    使用lambda:

      Runnable runnable = () -> System.out.println("执行run()方法.");
    

    提交任务到线程池:

    • 不使用lambda:
        //实战建议使用ThreadPoolExecutor自定义线程池,避免OOM,此处是为了方便示例
        ExecutorService executor = Executors.newFixedThreadPool(5);
        Runnable runnable = new Runnable() {
            @Override
            public void run() {
                System.out.println("执行任务.");
            }
        };
        executor.execute(runnable);
    
    • 使用lambda:
        ExecutorService executor = Executors.newFixedThreadPool(5);
        executor.execute(() -> {
            System.out.println("执行任务.");
        });
    

    线程池异步并获取结果

    • 不使用lambda:
        ExecutorService executor = Executors.newFixedThreadPool(5);
        executor.submit(new Callable<String>() {
            @Override
            public String call()  {
                System.out.println("执行异步任务.");
                return "异步结果";
            }
        });
    

    使用lambda简化:

        ExecutorService executor = Executors.newFixedThreadPool(5);
        Future<String> future = executor.submit(() -> {
            System.out.println("执行异步任务.");
            return "异步结果";
        });
        String result = future.get();
    
  • 相关阅读:
    adb入门学习笔记
    adb连接手机模拟器
    burp抓取手机模拟器流量
    Windows 下安装drozer(Windows 10),连接手机(红米note4X)
    UnicodeEncodeError: 'ascii' codec can't encode characters in position
    Windows下的Nessus安装与启动
    对VAuditDemo的一次审计
    http协议
    namp详解
    sqlmap详解
  • 原文地址:https://www.cnblogs.com/expiator/p/14751838.html
Copyright © 2011-2022 走看看