65.【 多线程2】(二)

简介: 65.【 多线程2】

(三)、Thread 深度刨析

自定义一个接口的方法:
interface 接口的名字{
  void 接口的方法名();
}
eg:
interface Marry{
    void marry();
}

12.静态代理:

1.什么是代理:就是帮助雇主完成某项任务
静态代理模式总结:
(1).真实对象要和代理对象实现同一个接口
(2).代理对象要代理真是对象
静态代理模式的优点:
(3).代理对象可以帮助真实对象做一些真实对象做不了的事情
(4).真实对象可以更加专注的只做一件事情
普通代理模式:
public class Demo6 {
    public static void main(String[] args) {
        You you=new You();
        Wedding_company wedding_company=new Wedding_company(you);
        wedding_company.marry();
    }
    //久旱逢甘露
    //他乡遇故知
    //洞烛花房夜
    //金榜题名时
}
共同接口
interface Marry{
    void marry();
}
真实对象
class You implements Marry{
    @Override
    public void marry() {
        System.out.println("李老师结婚了,超开心!");
    }
}
代理对象
class Wedding_company implements Marry{
private Marry target;
    public Wedding_company(Marry target) {
        this.target = target;
    }
    @Override
    public void marry() {
        before_marry();
        target.marry();
        after_marry();
    }
    public void before_marry(){
        System.out.println("结婚之前布置场景");
    }
    public void after_marry(){
        System.out.println("结婚之后收尾款");
    }
}

多线程实现静态代理模式
//代理实现Runnable 接口
        new Thread(new Runnable() {
            @Override
            public void run() {
                System.out.println("我爱你!");
            }
        }).start();
        new Wedding_company(new You()).marry();
public class Demo6 {
    public static void main(String[] args) {
        //代理实现Runnable 接口
        new Thread(new Runnable() {
            @Override
            public void run() {
                System.out.println("我爱你!");
            }
        }).start();
        new Wedding_company(new You()).marry();
    }
    //久旱逢甘露
    //他乡遇故知
    //洞烛花房夜
    //金榜题名时
}
interface Marry{
    void marry();
}
//真实的你
class You implements Marry{
    @Override
    public void marry() {
        System.out.println("李老师结婚了,超开心!");
    }
}
//婚庆公司
class Wedding_company implements Marry{
private Marry target;
    public Wedding_company(Marry target) {
        this.target = target;
    }
    @Override
    public void marry() {
        before_marry();
        target.marry();
        after_marry();
    }
    public void before_marry(){
        System.out.println("结婚之前布置场景");
    }
    public void after_marry(){
        System.out.println("结婚之后收尾款");
    }
}

13.Lamda表达式

(一)、什么是:
1.希腊字母表中排序第11位的字母: lambda
2.避免匿名内部类定义过多
3.其实质属于函数式编程的概念
(二)、为什么要使用lambda表达式?
1.避免匿名内部类定义过多
2.可以让你的代码看起来很简洁
3.去掉了一堆没有意义的代码,只留下核心的逻辑
(三)、函数式接口
函数式接口的定义:
1.任何接口,如果只包含唯一一个抽象方法,那么他就是一个函数式接口。
eg :
public interface Runnable(){
  public abstract void run();
}
2.对于函数式接口,我们可以通过lambda表达式来创建该接口的对象。
lamdb基本格式:
接口类对象=抽象方法的()->{"表达式"};

抽象方法是无参的时候

接口类对象需要被实现。
1.外部类
2.静态内部类
3.局部内部类
4.匿名类
5.lamdbad
public class Demo7 {
    //3.静态内部类:
    static class ILike_two implements ILike{
        @Override
        public void lambda() {
            System.out.println("I LIKE LAMBDA two!");
        }
    }
    public static void main(String[] args) {
        //创建一个接口类对象 以及实现类的对象+
        ILike like=new ILike_one();
        like.lambda();
        like=new ILike_two();
        like.lambda();
    //4.局部内部类:
    class ILike_three implements ILike{
        @Override
        public void lambda() {
            System.out.println("I LIKE LAMBDA three!");
        }
    }
        like=new ILike_three();
        like.lambda();
    //5.匿名内部类
        like= new ILike() {
        @Override
        public void lambda() {
            System.out.println("I LIKE LAMBDA four!");
        }
    };
        like.lambda();
    //6.用lambda简化
    like=()->{
        System.out.println("I LIKE LAMBDA five!");
         };
    like.lambda();
    }
}
//1.定义一个函数式接口
interface ILike{
    void lambda();
}
//2.实现类:
class ILike_one implements ILike{
    @Override
    public void lambda() {
        System.out.println("I LIKE LAMBDA !");
    }
}

抽象方法是有参的时候

public class Demo8 {
    //2.静态内部类
    static class Love_1 implements I_Love {
        @Override
        public void love(int a) {
            System.out.println("i love you  " + a);
        }
        public static void main(String[] args) {
            I_Love i_love = new Love();
            i_love.love(1);
            i_love=new Love_1();
            i_love.love(2);
        //3.局部内部类
            class Love_2 implements I_Love {
                @Override
                public void love(int a) {
                    System.out.println("i love you  " + a);
                }
            }
            i_love=new Love_2();
            i_love.love(3);
        //4.匿名内部类
        i_love=new I_Love() {
            @Override
            public void love(int a) {
                System.out.println("i love you  " + a);
            }
        };
        i_love.love(4);
        //5.lamdba
            i_love = (int a) -> {
                System.out.println(" i love you " + a);
            };
            i_love.love(5);
            //5.1  简化1(参数类型)
            i_love = a-> {
                System.out.println(" i love you " + a);
            };
            i_love.love(6);
            //5.2  简化2(括号(单个参数))
            i_love = (int a) -> {
                System.out.println(" i love you " + a);
            };
            i_love.love(7);
            //5.3  简化3(花括号(单行))
            i_love = (int a) ->
                System.out.println(" i love you " + a);
            i_love.love(8);
        }
    }
}
interface I_Love {
    void love(int a);
}
//外部类:
class Love implements I_Love {
    @Override
    public void love(int a) {
        System.out.println("i love you " + a);
    }
}

相关文章
|
1月前
|
并行计算 调度 UED
为什么要用多线程?
为什么要用多线程?
40 0
|
7月前
|
消息中间件 前端开发
C++11多线程相关
C++11多线程相关
60 0
|
8月前
|
安全 Java 调度
|
9月前
65.【 多线程2】(三)
65.【 多线程2】
32 0
|
网络协议 安全
libev与多线程
libev与多线程
libev与多线程
|
1月前
|
Web App开发 IDE Java
什么是多线程
什么是多线程
22 3
|
30天前
|
Java 调度
多线程问题(一)
多线程问题(一)
24 0
|
6月前
|
安全 Linux C++
C++多线程
C++多线程
42 1
|
1月前
|
安全 数据库 芯片
多线程的使用
多线程的使用
38 0
|
10月前
|
监控 Java API
多线程专题
多线程专题