多线程详解p8、Lambda表达式

简介: 多线程详解p8、Lambda表达式

Lambda表达式


  • λ希腊字母表排名第十一的字母英文名字为Lambda
  • 避免匿名内部类定义过多
  • 其实质属于函数式编程的概念


– 理解Functional Interface(函数式接口)是学习Java8 lambda表达式的关键所在


– 函数式接口的定义


  • 任何接口,如果只包含唯一一个抽象方法,那么他就是一个函数式接口
  • 对于一个函数式接口我们可以通过lambda表达式来创建该接口的对象


  1. 首先定义一个函数式接口(函数式接口就是接口中只有一个抽象方法)
  2. 实现接口,定义一个类实现接口对其方法进行重写
  3. 在main方法中创建一个接口对象执行方法(父类引用子类对象)
/*
* 推导Lambda表达式
* */
public class TestLambda1 {
    public static void main(String[] args) {
        Like like = new Lik();
        like.like();
    }
}
class Lik implements Like{
    @Override
    public void like() {
        System.out.println("我喜欢你");
    }
}
interface Like{
     void like();
}


  1. 使用静态内部类(就是将用有对象的类放到类里边加上静态)
public class TestLambda1 {
    static class Lik implements Like{
        @Override
        public void like() {
            System.out.println("我喜欢你");
        }
    }
    public static void main(String[] args) {
        Like like = new Lik();
        like.like();
    }
}
interface Like{
     void like();
}


  1. 局部内部类(在main方法里边)
public class TestLambda1 {
    public static void main(String[] args) {
         class Lik implements Like{
            @Override
            public void like() {
                System.out.println("我喜欢你1");
            }
        }
        Like like = new Lik();
        like.like();
    }
}


  1. 匿名内部类(没有类的名称必须借助接口实现)
public class TestLambda1 {
    public static void main(String[] args) {
        Like like=new Like() {
            @Override
            public void like() {
                System.out.println("我喜欢你1");
            }
        };
        like.like();
    }
}
interface Like{
     void like();
}


  1. lmbda
/*
* 推导Lambda表达式
* */
public class TestLambda1 {
    public static void main(String[] args) {
        Like ike = () -> {
            System.out.println("222");
        };
        ike.like();
    }
}


相关文章
|
29天前
|
存储 安全 Java
深入理解 Java 多线程、Lambda 表达式及线程安全最佳实践
线程使程序能够通过同时执行多个任务而更有效地运行。 线程可用于在不中断主程序的情况下在后台执行复杂的任务。 创建线程 有两种创建线程的方式。 扩展Thread类 可以通过扩展Thread类并覆盖其run()方法来创建线程:
138 1
深入理解 Java 多线程、Lambda 表达式及线程安全最佳实践
|
8月前
|
安全 Java API
Java进行多线程编程?(lambda表达式~)
Java进行多线程编程?(lambda表达式~)
33 0
|
8月前
|
程序员 调度
多线程的创建,复习匿名内部类,Thread的一些方法,以及lambda的变量捕捉,join用法(二)
多线程的创建,复习匿名内部类,Thread的一些方法,以及lambda的变量捕捉,join用法
|
8月前
|
前端开发 Java 程序员
多线程的创建,复习匿名内部类,Thread的一些方法,以及lambda的变量捕捉,join用法(一)
多线程的创建,复习匿名内部类,Thread的一些方法,以及lambda的变量捕捉,join用法
|
29天前
|
安全 Linux 编译器
C++11『lambda表达式 ‖ 线程库 ‖ 包装器』
C++11『lambda表达式 ‖ 线程库 ‖ 包装器』
45 0
|
10月前
|
缓存 Java 数据库连接
线程的创建、Lambda函数式接口?Runnable和Callable之间的适配?动态修改线程任务?这里带你图解Java线程池
上面只是提到了对于Thread执行任务的一种动态实现方法,肯定还有其他的。 那么动态实现有什么好处呢? 当我们有很多个任务的时候,我们如果一直使用new,再让gc的话,那么对于系统资源的消耗无疑是巨大的。 那么这个时候,如果我们固定一下,专门拿几个线程来处理并发任务呢?但是当并发任务很多又该怎么办? 这个时候就引入了池化思想 —— Pool 什么是池? 在学JDBC的时候我们知道了连接池,在学Spring的时候,我们又接触到了对象池。 其实按理来说线程池应该是大家在初学JavaSE的时候应该就遇到的,这里我们再来讲一下。 线程池,就是用一个容器来管理线程,这个容器叫做池(Poo
92 0
线程的创建、Lambda函数式接口?Runnable和Callable之间的适配?动态修改线程任务?这里带你图解Java线程池
|
10月前
|
并行计算 Java 开发者
3.1 函数式接口与Lambda表达式的实际应应用:使用Lambda表达式实现多线程编程
3.1 函数式接口与Lambda表达式的实际应应用:使用Lambda表达式实现多线程编程
57 0
|
8天前
|
缓存 Java 测试技术
Java性能优化(八)-多线程调优-线程池大小设置
Java性能优化(八)-多线程调优-线程池大小设置
9 0
|
9天前
|
安全 Java 容器
多线程(进阶四:线程安全的集合类)
多线程(进阶四:线程安全的集合类)
13 0