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();
    }
}
经验分享 程序员 微信小程序 职场和发展