Java基础 -多线程Lambda表达式及静态代理

简介: λ希腊字母表中排序第是一位的字母,英语名称为Lambda

Lamda表达式

  • λ希腊字母表中排序第是一位的字母,英语名称为Lambda
  • 避免匿名内部类定义过多
  • 其实质属于函数式编制的概念
(params)→expression[表达式]
(params)→statement[语句]
(params)→{statements}

new Thread ((->System.out.printlm("多线程学习")).start();

  • 为什么要使用lambda表达式
  • 避免匿名内部类定义过多
  • 可以让你的代码看起来更简洁
  • 丢掉一堆没有意义的代码,只留下核心的逻辑 理解Functional lnterface(函数式接口)是学习Java8 lambda表达式的关键所在
  • 函数式接口的定义:
  • 任何接口,如果只包含唯一一个抽象方法,那么它就是一个函数式接口。
  • 对于函数式接口,我们可以通过lambda表达式来创建接口的对象
public static void main(String[] args) {
        Ilove love=null;
         love = a -> {
            System.out.println("i love you->" + a);
        };
        love.love("zt");
    }
    interface Ilove {
        void love(String a);
    }
}

总结

  • lambda表达式只有一行代码的情况下才能简化成一行,如果有多行则需要使用代码块
  • 前提是接口为函数式接口,方法只能有一个
  • 多个参数也可以去掉参数类型,要去掉就都去掉,但要加括号love=(a,b)->

静态代理

  • 你:真实角色
  • 婚庆公司:代理你,帮你处理结婚的事
  • 结婚:实现都实现结婚接口即可
public static void main(String[] args) {
        wedding wedding = new wedding(new you());
        wedding.happy();
    }
}
interface Mraay{
    void happy();
}
//真实角色:你去结婚
class you implements Mraay{
    @Override
    public void happy() {
        System.out.println("结婚了");
    }
}
//代理角色:帮助你结婚
class wedding implements Mraay{
//代理谁
    private Mraay target;
    public wedding(Mraay target) {
        this.target = target;
    }
    @Override
    public void happy() {
        before();
        this.target.happy();//这就是真实的对象
        after();
    }
    private void before(){
        System.out.println("结婚前");
    }  private void after(){
        System.out.println("结婚后");
    }
}

静态代理模式总结

  • 真实对象和代理对象都要实现同一个接口
  • 代理对象要代理真实角色 所以需要一个参数来传入
  • 好处:代理对象可以做很多真实对象做不了的事情,真实对象只专注自己的事情
  • 婚庆公司==Thred
  • run()用线程的对象,调用的方法及run()在这里就是lambda表达式的实现方法
相关文章
|
2天前
|
Java 开发者
Java一分钟之-Lambda表达式与函数式接口
【5月更文挑战第12天】Java 8引入的Lambda表达式简化了函数式编程,与函数式接口结合,实现了代码高效编写。本文介绍了Lambda的基本语法,如参数列表、箭头符号和函数体,并展示了如何使用Lambda实现`Runnable`接口。函数式接口仅有一个抽象方法,可与Lambda搭配使用。`@FunctionalInterface`注解用于确保接口具有单一抽象方法。文章还讨论了常见的问题和易错点,如非函数式接口、类型冲突以及Lambda表达式的局部变量可见性,并提供了避免这些问题的策略。通过理解Lambda和函数式接口,开发者能提高代码可读性和效率。
33 4
|
2天前
|
Java API 开发者
Java中Lambda表达式的深入理解与应用
【5月更文挑战第12天】在Java 8之后,Lambda表达式已经成为了Java开发者必备的技能之一。Lambda表达式以其简洁、灵活的特点,大大提高了编程的效率。本文将深入探讨Lambda表达式的基本概念,语法规则,以及在实际开发中的应用,帮助读者更好地理解和使用Lambda表达式。
|
2天前
|
Java 程序员 API
Java 8新特性之Lambda表达式与Stream API的深度解析
【5月更文挑战第12天】本文将深入探讨Java 8中的两个重要新特性:Lambda表达式和Stream API。我们将从基本概念入手,逐步深入到实际应用场景,帮助读者更好地理解和掌握这两个新特性,提高Java编程效率。
34 2
|
4天前
|
Java
【JAVA进阶篇教学】第二篇:JDK8中Lambda表达式
【JAVA进阶篇教学】第二篇:JDK8中Lambda表达式
|
4天前
|
安全 Java
java-多线程学习记录
java-多线程学习记录
|
5天前
|
Java
【Java多线程】面试常考 —— JUC(java.util.concurrent) 的常见类
【Java多线程】面试常考 —— JUC(java.util.concurrent) 的常见类
15 0
|
5天前
|
设计模式 消息中间件 安全
【Java多线程】关于多线程的一些案例 —— 单例模式中的饿汉模式和懒汉模式以及阻塞队列
【Java多线程】关于多线程的一些案例 —— 单例模式中的饿汉模式和懒汉模式以及阻塞队列
10 0
|
Java
Java学习路线-57:静态代理和动态代理
Java学习路线-57:静态代理和动态代理
89 0
Java学习路线-57:静态代理和动态代理
Java学习路线-57:静态代理和动态代理
|
Java
Java学习路线-57:静态代理和动态代理
Java学习路线-57:静态代理和动态代理
84 0