推导lambda线程

本文详细探讨了Java中通过Runnable接口实现线程的四种方式,包括内部静态类、局部内部类、匿名内部类和Lambda表达式,并介绍了如何使用自定义接口和带有参数的方法。实例演示了如何通过接口标识变量调用方法,以及涉及接口方法参数和返回值的使用技巧。
摘要由CSDN通过智能技术生成

 

一、继承Runnable接口

1.内部静态类

package com.sxt.io2;

public class LambdaThread  {
    static class Test implements Runnable{

        @Override
        public void run() {
            for(int i=0;i<20;i++) System.out.println("coding...");
        }
    }

    public static void main(String[] args) {
        new Thread(new Test()).start();
        for(int i=0;i<20;i++) System.out.println("reading...");
    }
}

2.方法内部类(局部内部类) 

package com.sxt.io2;
public class LambdaThread {
    public static void main(String[] args) {
        class Test implements Runnable{

            @Override
            public void run() {
                for (int i = 0; i < 20; i++) System.out.println("coding...");
            }
        }
        new Thread(new Test()).start();
        for (int i = 0; i < 20; i++) System.out.println("reading...");
    }
}

3.匿名内部类

package com.sxt.io2;
public class LambdaThread {
    public static void main(String[] args) {
        new Thread(new Runnable() {
            public void run() {
                for (int i = 0; i < 20; i++) System.out.println("coding...");
            }
        }).start();
        for (int i = 0; i < 20; i++) System.out.println("reading...");
    }
}

4.lambda简化

package com.sxt.io2;
public class LambdaThread {
    public static void main(String[] args) {
        new Thread(()->{
            for (int i = 0; i < 20; i++) System.out.println("coding...");
        }
    ).start();
        for (int i = 0; i < 20; i++) System.out.println("reading...");
    }
}

二、自定义接口

package com.sxt.io2;

public  class LambdaTest2{
    //内部静态类
    static class Test implements Ilike{

        @Override
        public void Like() {
            System.out.println("like1...");
        }
    }

    public static void main(String[] args) {
        Ilike t=new Test();
        t.Like();
        //局部方法类
        class Test01 implements Ilike{

            @Override
            public void Like() {
                System.out.println("like2...");
            }
        }
        t=new Test01();
        t.Like();
        //匿名内部类
        t=new Ilike()
        {
            public void Like() {
                System.out.println("like3...");
            }
        };
        t.Like();
        //lambda简化
        t=()->System.out.println("like4...");
        t.Like();
    }
    interface Ilike{
        void Like();
    }

}

问题总结:

使用接口标识变量:Ilike t=new Test();Like t=new Test2();Ilike t=new Test3();...都可用t.Like()调用接口方法

三、接口方法中有参数

package com.sxt.io2;
interface ILove{
    void Love(int a);
}
public class LambdaTest3 {
    public static void main(String[] args) {
        ILove love=(a)-> System.out.println("I love..."+a);
        love.Love(3);
    }
}

四、接口方法中有参数和返回值

package com.sxt.io2;
interface  IInterest{
    int interest(int a,int b);
}
public class LambdaTest4 {
    public static void main(String[] args) {
        IInterest interest =(c,d)->c+d;
        System.out.println(interest.interest(30,40));
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值