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项目控制台中文乱码