多线程中的静态代理模式

1、实现多线程的三种方式

  1. 继承Thread类 【Thread类实现了Runnable接口】
  2. 实现Runnable接口
  3. 实现Callable接口

2、静态代理模式例子

静态模式三部分组成:
1.共同实现的接口
2.被代理目标
3.代理

  • 例 :你结婚,需要找一个婚庆公司,帮你布置婚礼现场等。这个时候,你 就是被代理对象,婚庆公司就是代理,而结婚就是那个被共同实现的接口。
/**
 * @deprecated 静态代理
 *
 * 1.真实角色 (被代理目标) 本文中的 class You
 * 2.代理  本文中的 class WeddingCompany
 * 3.接口  本文中的 interface Marry
 *
 **/
public class StaticProxy {
	//测试
    public static void main(String[] args) {
		//把目标 你 传给 婚庆公司
        WeddingCompany weddingCompany = new WeddingCompany(new You());
        //执行愉快的结婚这个方法
        weddingCompany.HappyMarry();
    }
}
//声明结婚接口
interface Marry{
    //声明结婚的方法
    void HappyMarry();
}

//被代理,目标对象
class You implements Marry {
    @Override
    public void HappyMarry() {
        System.out.println("结婚了");
    }
}

//代理角色,帮助布置会场
class WeddingCompany implements Marry {

    private Marry target;

    public WeddingCompany (Marry target) {
        this.target = target;
    }

    @Override
    public void HappyMarry() {
        //结婚之前应该做些什么
        before();
        //调用目标的结婚方法
        this.target.HappyMarry();
        //结婚之后收取尾款
        after();
    }

    private void after() {
        System.out.println("结婚之前,布置会场");
    }

    private void before() {
        System.out.println("结婚之后,收取尾款");
    }
}

3、多线程中的Thread类与例子的对比

  • 创建一个线程
public class ThreadStudy extends Thread{
	
    new Thread(() -> System.out.println("结婚")).start();
}

Thread源码浅析(跟结婚例子对比)

  • 在new Thread的时候 ,类似于例子中的 new WeddingCompany(new You());
  • WeddingCompany类实现了Marry接口,Thread类实现了Runnable接口
    在这里插入图片描述
  • Marry接口中定义了 HappyMarry();方法,Runnable接口中定义了run();方法
    在这里插入图片描述
  • 例子中是调用HappyMarry()实现静态代理,Thread是调用接口中的run方法实现静态代理。

总结

  • 静态代理三要素: 1.接口(会被代理与被代理共同实现) 2、代理 3、被代理目标
  • Thread的静态代理实现流程
    1.创建目标对象,并实现与Thread类共同实现的接口Runnable接口。
    2.将目标对象传给Thread。
    3.调用接口中的run方法
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值