1 静态内部类
package study_02;
public class LamdaThread {
//静态内部类
static class Test implements Runnable{
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();
}
}
2 局部内部类
package study_02;
public class LamdaThread {
//静态内部类
public static void main(String[] args) {
//局部内部类
class Test implements Runnable{
public void run() {
for (int i = 0; i < 20; i++) {
System.out.println("coding.....");
}
}
}
new Thread(new Test()).start();
}
}
3 匿名内部类
package study_02;
public class LamdaThread {
public static void main(String[] args) {
//匿名内部类,必须借助接口或者父类Runnable
new Thread(new Runnable() {
@Override
public void run() {//实现体
for (int i = 0; i < 20; i++) {
System.out.println("coding......");
}
}
}).start();
}
}
4 lambda表达式
package study_02;
public class LamdaThread {
public static void main(String[] args) {
//jdk8简化 lambda
new Thread(()-> {
for (int i = 0; i < 20; i++) {
System.out.println("coding......");
}}).start();
}
}
无参数的lamda表达式推导
package study_02;
public class LamdaThread2 {
static class Like2 implements Ilike{
//静态内部类
public void lambda() {
System.out.println("I like lambda2 静态内部类");
}
}
public static void main(String[] args) {
//静态内部类
Ilike like = new Like();
like.lambda();
//局部内部类
class Like3 implements Ilike{
public void lambda() {
System.out.println("I like lambda2 局部内部类");
}
}
like = new Like3();
like.lambda();
like = new Like2();
like.lambda();
//匿名内部类
like = new Ilike() {
public void lambda() {
System.out.println("I like lambda 匿名方法类");
}
};
like.lambda();
//lamda
like = ()-> {
System.out.println("I like lambda lambda方法");
};
like.lambda();
}
}
interface Ilike{
void lambda();
}
class Like implements Ilike{
@Override
public void lambda() {
System.out.println("I like lambda");
}
}
带参数的lambda表达式推导
package study_02;
public class LamdaThread2 {
public static void main(String[] args) {
Ilike like = (int a)->{
System.out.println("I like lambda----->" + a);
};
like.lambda(100);
//可以省略数据类型
like = (a)-> {
System.out.println("I like lambda----->" + a);
};
like.lambda(200);
//只有一个参数的情况下()可以省略
like = a->{
System.out.println("I like lambda----->" + a);
};
like.lambda(300);
//只有一行代码 {}可以省略
like = a-> System.out.println("I like lambda----->" + a);
like.lambda(400);
}
}
interface Ilike{
void lambda(int a);
}
class Like implements Ilike{
@Override
public void lambda(int a) {
System.out.println("I like lambda----->" + a);
}
}
带返回值的lambda表达式
package study_02;
public class LamdaThread2 {
public static void main(String[] args) {
Ilike like = (int a,int b)->{
System.out.println("I like lambda----->" + a + "+" + b);
return a+b;
};
System.out.println(like.lambda(10, 20));
/*************************************/
like = (a,b)-> {
System.out.println("I like lambda----->" + a + "+" + b);
return a+b;
};
System.out.println(like.lambda(20, 30));
/*************************************/
like = (a,b)->{
return a+b;
};
System.out.println(like.lambda(30, 40));
/*************************************/
//如果代码只有一行 return a+b可以简化成以下方式
like = (a,b)-> a+b;
System.out.println(like.lambda(40, 50));
}
}
interface Ilike{
int lambda(int a,int b);
}
class Like implements Ilike{
@Override
public int lambda(int a,int b) {
System.out.println("I like lambda----->" + a + "+" + b);
return a+b;
}
}
lambda线程简化究极版
package study_02;
public class LambdaThread {
public static void main(String[] args) {
new Thread(()->{
for (int i = 0; i < 20; i++) {
System.out.println("singing.....");
}
}).start();
new Thread(()->{
for (int i = 0; i < 20; i++) {
System.out.println("coding.....");
}
}).start();;
}
}