zoukankan      html  css  js  c++  java
  • 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);
    }
    

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

    重视基础,才能走的更远。
  • 相关阅读:
    python学习之关于变量与内存的问题
    [题解]GDUT 2020年11月赛DE题
    【转】关于Oracle默认用户名system密码不正确登录不上解决方案
    [转载] Monitor Tools
    java.lang.NoSuchMethodError: javax.servlet.http.HttpServletRequest.getAsyncContext()Ljavax/servlet/AsyncContext;
    【SSM】Result Maps collection already contains value for crud.dao.EmployeeMapper.BaseResultMap
    EL表达式失效,页面取不到数据
    处理回归BUG最佳实践
    固定QPS压测初试
    Java字符串到数组的转换--最后放大招
  • 原文地址:https://www.cnblogs.com/xzlf/p/12681527.html
Copyright © 2011-2022 走看看