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);
    }
}

相关文章
|
安全 Java
多线程02
多线程02
|
25天前
|
存储 并行计算 安全
C++多线程应用
【10月更文挑战第29天】C++ 中的多线程应用广泛,常见场景包括并行计算、网络编程中的并发服务器和图形用户界面(GUI)应用。通过多线程可以显著提升计算速度和响应能力。示例代码展示了如何使用 `pthread` 库创建和管理线程。注意事项包括数据同步与互斥、线程间通信和线程安全的类设计,以确保程序的正确性和稳定性。
|
6月前
|
Web App开发 IDE Java
什么是多线程
什么是多线程
46 3
|
6月前
|
设计模式 安全 Java
多线程问题(三)
多线程问题(三)
35 0
|
6月前
|
安全 Java C#
C#多线程详解
C#多线程详解
58 0
|
6月前
|
前端开发 Java
|
存储 安全 Java
今天聊聊多线程
今天聊聊多线程
44 0
|
调度 C++
多线程
多线程
|
API
多线程具体实现(下)
多线程具体实现
48 0