【笔记】Java L3

ladmon

package com.learning.lambdap;

public class ThreadDemo {
    public static  void testSleep(SleepInterface sleepInterface){sleepInterface.sleep("小明家");}
    public static void testSum(SumInterface sumInterface,int a,int b){sumInterface.add(a,b);}
    public static void testSub(SubInterface subInterface,int a,int b){subInterface.sub(a,b);};

    public static void main(String[] args) {
        // 1. 实现Runnable接口

        Runnable r = new MyRunnable();
        Thread thread = new Thread(r);
        thread.start();


        //2. 匿名内部类改进
        Thread thread2= new Thread(new Runnable() {
            @Override
            public void run() {
                System.out.println("匿名内部类实现线程启动~~~~~");
            }
        });
        thread2.start();

        //3. 使用lambdap实现线程启动(无参数、无返回值)
        //(形式参数)->方法体
        Thread thread3 = new Thread(()->{
            System.out.println("lambdap~~~~~");
        });
        thread3.start();

        //lambda使用前提:接口、接口有且只有一个抽象方法,如Runable是接口,里面只有一个abstract方法
        //5. 有参数有返回值
        SleepInterface s = (String house)->{
            System.out.println("这是一个睡觉的接口调用");
            System.out.println("接着是lambda的有参返回实现"+house+"睡觉。。。。。");
        };

        testSleep(s);

        //6. 多个参数 void无返回
        SumInterface s2 = (int a,int b )->{
            int sum = a+b;
            System.out.println("Sum接口的调用,用lambda实现sum"+a+"+"+b +"="+ sum);
        };
        testSum(s2,3,2);

        //7. 多个参数,有返回,如int
        SubInterface subInterface = (int a,int b)->{
            int sub = a-b;
            System.out.println("sub接口的调用,用lambda实现"+"a"+"-"+"b"+"="+sub);
            return sub;
        };
        testSub(subInterface,3,2);

        //可以省略,省略后的写法
        //如果代码块只有一句,可以省略大括号、分号,如果有return,return也要省略


    }
}