一、
package com.lzy.thread;
/**
* Lambda表达式 简化线程(用一次)的使用
* @author LZY
*
*/
public class hTestLambda {
//静态内部类
static class Test implements Runnable{
@Override
public void run() {
for(int i=0;i<20;i++) {
System.out.println("一边听歌");
}
}
}
public static void main(String[] args) {
//new Thread(new Test()).start();
//局部内部类
class Test2 implements Runnable{
@Override
public void run() {
for(int i=0;i<20;i++) {
System.out.println("一边听歌");
}
}
}
new Thread(new Test2()).start();
//匿名内部类 必须借助接口或者父类
new Thread(new Runnable() {
public void run() {
for(int i=0;i<20;i++) {
System.out.println("一边听歌");
}
}
}).start();
//jdk8简化Lambda表达式
new Thread(()->{
for(int i=0;i<20;i++) {
System.out.println("一边歌");
}
}).start();
}
}
从静态内部类->局部内部类->匿名内部类->lambda 使代码逐渐的简化,匿名内部类不需要在定义实现类Test,lambda不但不需要定义实现类,方法名也简化省略。
二、自己定义一个 加深印象
package com.lzy.thread;
/**
* Lambda表达式 自定义
* @author LZY
*
*/
public class hTestLambda02 {
public static void main(String[] args) {
//匿名内部类
ILike like=new ILike() {
public void lambda() {
System.out.println("I like lambda");
}
};
like.lambda();
//lambda
like=()->{
System.out.println("I like lambda");
};
like.lambda();
}
}
interface ILike{
void lambda();
}
class Like implements ILike{
@Override
public void lambda() {
System.out.println("I like lambda");
}
}
三、
package com.lzy.thread;
/**
* Lambda推导+参数
* @author LZY
*
*/
public class hTestLambda04 {
public static void main(String[] args) {
IInterste interste=(int a)->{
System.out.println("i love lambda"+a);
};
interste.lambda(50);
//简化 当代码只有一行时{}可以去掉,如果传入参数只有一个, 括号()也可以省掉
interste=a->System.out.println("i love lamkbda"+a);
interste.lambda(100);
}
}
interface IInterste{
void lambda(int a);
}
class Interface implements IInterste{
@Override
public void lambda(int a) {
}
}
lambda可以根据情况适当更加简化
四,多线程使用lambda例子
package com.lzy.thread;
/**
* Lambda推导+参数+返回值
* @author LZY
*
*/
public class hTestLambda06 {
public static void main(String[] args) {
new Thread(()->{
for(int i=1;i<200;i++) {
System.out.println("一边学习");
}
}).start();
new Thread(()->{
for(int i=1;i<200;i++) {
System.out.println("一边难受**************");
}
}).start();
}
}
不需要在继承Thread或者implements 接口 Runnable