多线程之Lambda表达式

简介: 多线程之Lambda表达式的介绍

多线程之Lambda表达式


(一)、基础知识


  • λ希腊字母表中排序11位,英文名称为Lambda


  • 它的作用是避免匿名内部类定义过多


  • 其实质是属于函数式编程的概念


  • (params)->expression[表达式]
  • (params)->statement[语句]
  • (params)->statement


  • new Thread(()->System.out.println(“多线程”)).start();


  • 为什么要使用lambda表达式


避免匿名内部类定义过多

可以让代码看起来更加简洁

去掉了一对没有意义的代码。只留下核心的逻辑


  • 理解Functional Interface(函数式接口)这个是关键


  • 函数式接口的定义:


  • 任何接口,如果只包含唯一一个抽象方法,那么他就是一个函数式接口。


public interface Runnable{
    public abstract void run();
}


  • 对于函数式接口,我们可以通过lambda表达式来创建该接口的对象。


package com.hxl.lambda;
/*
推导Lambda表达式
 */
public class TestLambda1 {
    //3.静态内部类
    static class Like2 implements ILike{
        @Override
        public void lambda() {
            System.out.println("I like lambda2");
        }
    }
    public static void main(String[] args) {
        ILike like = new Like();
        like.lambda();
        like = new Like2();
        like.lambda();
        //4.局部内部类
        class Like3 implements ILike{
            @Override
            public void lambda() {
                System.out.println("I like lambda3");
            }
        }
        like = new Like3();
        like.lambda();
        //5.匿名内部类,没有类的名称,必须借助接口或者父类
        like = new Like(){
            @Override
            public void lambda(){
                System.out.println("I like lambda4");
            }
        };
        like.lambda();
        //6.用lambda简化
        like = ()->{
            System.out.println("I like lambda6");
        };
        like.lambda();
    }
}
//1.定义一个函数式接口
interface ILike{
    void lambda();
}
//2.实现类
class Like implements ILike{
    @Override
    public void lambda() {
        System.out.println("I like lambda");
    }
}


/

package com.hxl.lambda;
public class TestLambda2 {
    public static void main(String[] args) {
        //ILove love = null;
        //1.Lambda表达式简化
        ILove love = (int a)->{
                System.out.println("I Love You" + a);
        };
        //简化1:参数类型
        love = (a)->{
            System.out.println("I Love You" + a);
        };
        //简化2:简化括号
        love = a->{
            System.out.println("I Love You" + a);
        };
        //简化3:去掉花括号
        love = a->System.out.println("I Love You" + a);
        /*
        小总结:
            1.lambda表达式只能有一行代码的情况下才能简化为一行,如果代码里有多行,就用代码块包裹
            2.前提是接口必须为函数式接口(接口里面只有一个方法)
            3.多个参数可以去掉参数类型,要去就都去,且必须加上括号
         */
        love.love(32);
    }
}
interface ILove{
    void love(int a);
}
相关文章
|
6月前
|
存储 安全 Java
深入理解 Java 多线程、Lambda 表达式及线程安全最佳实践
线程使程序能够通过同时执行多个任务而更有效地运行。 线程可用于在不中断主程序的情况下在后台执行复杂的任务。 创建线程 有两种创建线程的方式。 扩展Thread类 可以通过扩展Thread类并覆盖其run()方法来创建线程:
212 1
深入理解 Java 多线程、Lambda 表达式及线程安全最佳实践
|
安全 Java API
Java进行多线程编程?(lambda表达式~)
Java进行多线程编程?(lambda表达式~)
51 0
|
4月前
lambda创建线程
lambda创建线程
|
程序员 调度
多线程的创建,复习匿名内部类,Thread的一些方法,以及lambda的变量捕捉,join用法(二)
多线程的创建,复习匿名内部类,Thread的一些方法,以及lambda的变量捕捉,join用法
|
前端开发 Java 程序员
多线程的创建,复习匿名内部类,Thread的一些方法,以及lambda的变量捕捉,join用法(一)
多线程的创建,复习匿名内部类,Thread的一些方法,以及lambda的变量捕捉,join用法
|
6月前
|
安全 Linux 编译器
C++11『lambda表达式 ‖ 线程库 ‖ 包装器』
C++11『lambda表达式 ‖ 线程库 ‖ 包装器』
75 0
|
缓存 Java 数据库连接
线程的创建、Lambda函数式接口?Runnable和Callable之间的适配?动态修改线程任务?这里带你图解Java线程池
上面只是提到了对于Thread执行任务的一种动态实现方法,肯定还有其他的。 那么动态实现有什么好处呢? 当我们有很多个任务的时候,我们如果一直使用new,再让gc的话,那么对于系统资源的消耗无疑是巨大的。 那么这个时候,如果我们固定一下,专门拿几个线程来处理并发任务呢?但是当并发任务很多又该怎么办? 这个时候就引入了池化思想 —— Pool 什么是池? 在学JDBC的时候我们知道了连接池,在学Spring的时候,我们又接触到了对象池。 其实按理来说线程池应该是大家在初学JavaSE的时候应该就遇到的,这里我们再来讲一下。 线程池,就是用一个容器来管理线程,这个容器叫做池(Poo
113 0
线程的创建、Lambda函数式接口?Runnable和Callable之间的适配?动态修改线程任务?这里带你图解Java线程池
|
并行计算 Java 开发者
3.1 函数式接口与Lambda表达式的实际应应用:使用Lambda表达式实现多线程编程
3.1 函数式接口与Lambda表达式的实际应应用:使用Lambda表达式实现多线程编程
98 0
|
1月前
|
存储 消息中间件 资源调度
C++ 多线程之初识多线程
这篇文章介绍了C++多线程的基本概念,包括进程和线程的定义、并发的实现方式,以及如何在C++中创建和管理线程,包括使用`std::thread`库、线程的join和detach方法,并通过示例代码展示了如何创建和使用多线程。
43 1
C++ 多线程之初识多线程
|
26天前
|
Java 开发者
在Java多线程编程中,创建线程的方法有两种:继承Thread类和实现Runnable接口
【10月更文挑战第20天】在Java多线程编程中,创建线程的方法有两种:继承Thread类和实现Runnable接口。本文揭示了这两种方式的微妙差异和潜在陷阱,帮助你更好地理解和选择适合项目需求的线程创建方式。
19 3

热门文章

最新文章