Java Thread 与 Runnable类详解及Lambda演化过程
静态代理总结:
1,真实对象和代理对象都要实现同一接口 2,代理对象要代理真实角色 3,代理对象可以做很多真实对象做不了的事情 4,真实对象专注做自己的核心业务
Thread实现过程,其实就是静态代理的实现过程:
1,用一个类去实现Runnable接口(真实对象) 2,而Thread类本身就是Runnable接口的实现类(代理对象)(设置目标对象为真实对象的类型) 3,把真实对象装入代理对象
Lambda注意:
1,前提是接口为函数式接口 2,lambda有一行代码的情况下,才能简化成一行,如果多行,则用代码块包装 3,多个参数也可以去掉参数,要去掉就要都去掉,必须加上括号
函数式接口:
仅有一个抽象方法,可以有多个非抽象方法。
package com.chenxb.myThread;
public class SimpleThread implements Runnable {
@Override
public void run() {
System.out.println("11111");
}
}
class SimpleMain {
public static void main(String[] args) {
/*
常规流程:
1,继承Runnable接口
2,实例化继承类对象
3,把对象作为参数放入Thread方法
4,调用start();*/
SimpleThread simpleThread = new SimpleThread();
new Thread(simpleThread).start();
/*
简化流程1:匿名实例化类
*/
new Thread(new SimpleThread()).start();
/*
简化流程2:用匿名内部类
1,简化实现接口这个步骤,直接new接口(注意这里的new不是新建对象,接口是抽象来的,不是具体类)
*/
new Thread(
new Runnable() {
@Override
public void run() {
System.out.println("22222");
}
}).start();
/*
简化流程3:Lambda表达式
Lambda注意:
1,前提是接口为函数式接口(Runnable是函数式接口,仅有一个抽象方法)
2,lambda有一行代码的情况下,才能简化成一行,如果多行,则用代码块包装
3,多个参数也可以去掉参数,要去掉就要都去掉,必须加上括号
*/
new Thread(()->System.out.println("3333333")).start();
}
}
上一篇:
IDEA上Java项目控制台中文乱码
