Java 多线程开发 03 —— Lambda表达式

系列文章目录

Java 多线程开发 01 —— 线程创建
Java 多线程开发 02 —— 静态代理模式
Java 多线程开发 03 —— Lambda表达式
Java 多线程开发 04 —— 线程状态控制、优先级、守护线程
Java 多线程开发 05 —— synchronized、Lock、死锁
Java 多线程开发 06 —— 管程法、信号灯法


Java Lambda表达式

形如下面:

new Thread(()->System.out.println("Lambda"));

为什么要使用Lambda表达式:

  1. 避免匿名内部类定义过多
  2. 可以使代码看起来更简洁
  3. 去掉了一堆没有意义的代码,只留下核心的逻辑

下面是Lambda的化简过程:

package lessen05;

/**
 * Lambda使用条件:必须是函数式接口,即接口只含一个抽象方法
 */

//1. 通过类实现接口
class Like1 implements Ilike{
    
    
    @Override
    public void like(int a) {
    
    
        System.out.println("I like lambda "+a);
    }
}
interface Ilike{
    
    
    void like(int a);
}

public class TestLambda01 {
    
    
    //2. 静态内部类
    static class Like2 implements Ilike{
    
    
        @Override
        public void like(int a) {
    
    
            System.out.println("I like lambda "+a);
        }
    }

    public static void main(String[] args) {
    
    
        Ilike like = new Like1();
        like.like(1);

        like = new Like2();
        like.like(2);

        //3. 局部内部类
        class Like3 implements Ilike{
    
    
            @Override
            public void like(int a) {
    
    
                System.out.println("I like lambda "+a);
            }
        }
        like = new Like3();
        like.like(3);

        //4. 匿名内部类
        like = new Ilike() {
    
    
            @Override
            public void like(int a) {
    
    
                System.out.println("I like lambda "+a);
            }
        };
        like.like(4);

        //5. Lambda表达式
        like = (int a)->{
    
    
            System.out.println("I like lambda "+a);
        };
        like.like(5);
    }
}

Lambda表达式再化简:

  1. 表达式含参数时,可省略参数类型。多个参数时,要么都省略类型,要么都不省略。

    like = (a, b)->{
          
          System.out.println("参数a:"+a+",数b:“+b);}
  2. 表达式参数只有一个时,可省略 ( )

    like = a->{
          
          System.out.println("参数a:"+a);};
    
  3. 表达式的{ }中只有一行时,可省略 { }

    like = a->System.out.println("参数a:"+a);
    

之前创建线程的方法中,我们可以通过实现Runnable接口来创建线程。而Runnable接口只有一个run()抽象方法,所以我们以后在创建线程时,如果执行体较为简单,可以直接用Lambda表达式。

猜你喜欢

转载自blog.csdn.net/qq_39763246/article/details/112912602