• Java 多线程 -- lambda 表达式推导


    jdk 8 开始 java 引入了lambda 表达式。
    lambda适用场景:
    1、接口或父类
    2、接口或父类只有一个方法

    我们从多线程写法来推导一下:

    1、外部类写法:

    package com.xzlf.thread;
    /**
     * Lambda 表达式推导一:外部类
     * @author xzlf
     *
     */
    public class LambdaTest01 {
    	public static void main(String[] args) {
    		ThreadA ta = new ThreadA();
    		new Thread(ta).start();
    	}
    }
    
    	
    class ThreadA implements Runnable{
    	
    	@Override
    	public void run() {
    		System.out.println("外部类");
    	}
    }
    

    运行结果:
    在这里插入图片描述

    2、静态内部类写:

    package com.xzlf.thread;
    /**
     * Lambda 表达式推导二: 静态内部类
     * @author xzlf
     *
     */
    public class LambdaTest02 {
    	public static void main(String[] args) {
    		ThreadA ta = new ThreadA();
    		new Thread(ta).start();
    	}
    	
    	static class ThreadA implements Runnable{
    		
    		@Override
    		public void run() {
    			System.out.println("静态内部类");
    		}
    	}
    }
    
    

    运行结果:
    在这里插入图片描述

    3、局部内部类写法:

    package com.xzlf.thread;
    /**
     * Lambda 表达式推导三:局部内部类
     * @author xzlf
     *
     */
    public class LambdaTest03 {
    	public static void main(String[] args) {
    		class ThreadA implements Runnable{
    			
    			@Override
    			public void run() {
    				System.out.println("静态内部类");
    			}
    		}
    		
    		ThreadA ta = new ThreadA();
    		new Thread(ta).start();
    	}
    	
    	
    }
    

    运行结果:
    在这里插入图片描述

    4、匿名内部类写法:

    package com.xzlf.thread;
    /**
     * Lambda 表达式推导四:匿名内部类
     * @author xzlf
     *
     */
    public class LambdaTest04 {
    	public static void main(String[] args) {
    		new Thread(new Runnable() {
    			@Override
    			public void run() {
    				System.out.println("匿名内部类");
    			}
    		}).start();
    	}
    }
    

    运行结果:
    在这里插入图片描述

    5、lambda表达式:省略接口名 和 方法名

    package com.xzlf.thread;
    /**
     * Lambda 表达式推导五:lambda 表达式 :省略接口名 和 方法名
     * @author xzlf
     *
     */
    public class LambdaTest06 {
    	public static void main(String[] args) {
    		new Thread(() -> {
    				System.out.println("匿名内部类");
    		}).start();
    	}
    }
    
    

    运行结果:
    在这里插入图片描述

    6、lambda表达式 :省略大括号(方法内只有一行代码):

    package com.xzlf.thread;
    /**
     * Lambda 表达式推导六:lambda 表达式 :省略大括号
     * @author xzlf
     *
     */
    public class LambdaTest05 {
    	public static void main(String[] args) {
    		new Thread(() -> System.out.println("lambda 简化")).start();
    	}
    }
    
    

    运行结果:
    在这里插入图片描述

    7、lambda表达式带参数写法:

    package com.xzlf.thread;
    /**
     * Lambda 表达式推导七:lambda 表达式 :省略接口名 和 方法名
     * @author xzlf
     *
     */
    public class LambdaTest07 {
    	public static void main(String[] args) {
    		ILike like = (String name) -> {
    			System.out.println("i like " + name);
    			};
    		like.like("lambda");	
    	}
    }
    
    interface ILike{
    	void like(String name);
    }
    	
    
    

    运行结果:
    在这里插入图片描述

    8、lambda表达式带参数简化写法:

    方法只有一个lambda会自动匹配参数类型,可以省略参数类型和大括号:

    public class LambdaTest07 {
    	public static void main(String[] args) {
    		ILike like = (name) -> System.out.println("i like " + name);
    			
    		like.like("lambda");	
    	}
    }
    
    interface ILike{
    	void like(String name);
    }
    

    运行结果:

    在这里插入图片描述

    9、lambda表达式带参数和返回值写法:

    一样的,方法只有一个,且方法内只有一条语句时,可以省略参数类型和大括号以及 return 关键字;

    public class LambdaTest07 {
    	public static void main(String[] args) {
    		Count c = (a, b) -> a + b;
    		int sum = c.add(10, 20);
    		System.out.println(sum);
    			
    		
    	}
    }
    
    interface Count{
    	int add(int a, int b);
    }
    

    运行结果:
    在这里插入图片描述

    重视基础,才能走的更远。
  • 相关阅读:
    暑假第二周总结
    7.18-7.24 第一周周报
    poj 3295 Tautology
    2016多校 #2 1006 Fantasia
    codeforces 698B Fix a Tree
    codeforces 699B Bomb
    HDU 4578(线段树
    CF 600F( 二分图
    hdu 5517 Triple(二维树状数组)
    HDU HDOJ5412(树套树or整体二分
  • 原文地址:https://www.cnblogs.com/xzlf/p/12681527.html
Copyright © 2020-2023  润新知