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表达式的实现方法
相关文章
|
3天前
|
安全 Java API
java如何请求接口然后终止某个线程
通过本文的介绍,您应该能够理解如何在Java中请求接口并根据返回结果终止某个线程。合理使用标志位或 `interrupt`方法可以确保线程的安全终止,而处理好网络请求中的各种异常情况,可以提高程序的稳定性和可靠性。
27 6
|
11天前
|
安全 算法 Java
Java多线程编程中的陷阱与最佳实践####
本文探讨了Java多线程编程中常见的陷阱,并介绍了如何通过最佳实践来避免这些问题。我们将从基础概念入手,逐步深入到具体的代码示例,帮助开发者更好地理解和应用多线程技术。无论是初学者还是有经验的开发者,都能从中获得有价值的见解和建议。 ####
|
11天前
|
Java 调度
Java中的多线程编程与并发控制
本文深入探讨了Java编程语言中多线程编程的基础知识和并发控制机制。文章首先介绍了多线程的基本概念,包括线程的定义、生命周期以及在Java中创建和管理线程的方法。接着,详细讲解了Java提供的同步机制,如synchronized关键字、wait()和notify()方法等,以及如何通过这些机制实现线程间的协调与通信。最后,本文还讨论了一些常见的并发问题,例如死锁、竞态条件等,并提供了相应的解决策略。
33 3
|
12天前
|
监控 Java 开发者
深入理解Java中的线程池实现原理及其性能优化####
本文旨在揭示Java中线程池的核心工作机制,通过剖析其背后的设计思想与实现细节,为读者提供一份详尽的线程池性能优化指南。不同于传统的技术教程,本文将采用一种互动式探索的方式,带领大家从理论到实践,逐步揭开线程池高效管理线程资源的奥秘。无论你是Java并发编程的初学者,还是寻求性能调优技巧的资深开发者,都能在本文中找到有价值的内容。 ####
|
16天前
|
监控 Java 数据库连接
Java线程管理:守护线程与用户线程的区分与应用
在Java多线程编程中,线程可以分为守护线程(Daemon Thread)和用户线程(User Thread)。这两种线程在行为和用途上有着明显的区别,了解它们的差异对于编写高效、稳定的并发程序至关重要。
26 2
|
16天前
|
安全 Java API
Java中的Lambda表达式:简化代码的现代魔法
在Java 8的发布中,Lambda表达式的引入无疑是一场编程范式的革命。它不仅让代码变得更加简洁,还使得函数式编程在Java中成为可能。本文将深入探讨Lambda表达式如何改变我们编写和维护Java代码的方式,以及它是如何提升我们编码效率的。
|
2月前
|
存储 消息中间件 资源调度
C++ 多线程之初识多线程
这篇文章介绍了C++多线程的基本概念,包括进程和线程的定义、并发的实现方式,以及如何在C++中创建和管理线程,包括使用`std::thread`库、线程的join和detach方法,并通过示例代码展示了如何创建和使用多线程。
55 1
C++ 多线程之初识多线程
|
2月前
|
Java 开发者
在Java多线程编程中,创建线程的方法有两种:继承Thread类和实现Runnable接口
【10月更文挑战第20天】在Java多线程编程中,创建线程的方法有两种:继承Thread类和实现Runnable接口。本文揭示了这两种方式的微妙差异和潜在陷阱,帮助你更好地理解和选择适合项目需求的线程创建方式。
26 3
|
2月前
|
Java 开发者
在Java多线程编程中,选择合适的线程创建方法至关重要
【10月更文挑战第20天】在Java多线程编程中,选择合适的线程创建方法至关重要。本文通过案例分析,探讨了继承Thread类和实现Runnable接口两种方法的优缺点及适用场景,帮助开发者做出明智的选择。
22 2
|
2月前
|
Java
Java中多线程编程的基本概念和创建线程的两种主要方式:继承Thread类和实现Runnable接口
【10月更文挑战第20天】《JAVA多线程深度解析:线程的创建之路》介绍了Java中多线程编程的基本概念和创建线程的两种主要方式:继承Thread类和实现Runnable接口。文章详细讲解了每种方式的实现方法、优缺点及适用场景,帮助读者更好地理解和掌握多线程编程技术,为复杂任务的高效处理奠定基础。
35 2