A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

大家在做多线程的时候,用Runbale是否有想过大概的原理呢?这里我给大家讲讲关于用Runnable接口实现多线程与静态代理的关系

静态代理类的实现如下实例,通过建立一个通用接口,一个真实类,一个代理类,真实类和代理类都实现了这个接口,通过代理类来调用真实类来实现功能,本篇文章内容稍微难点,需要有基础的人才能理解其中的意思


package Demo10Thread;
/**
* 静态代理类的实例和作用,可以联想到多线程实现Runnable接口来实现多线程
* //1、建立真实类
      You you = new You();
      //2、建立代理类,并引用真实类
      WeddingCompany wed = new WeddingCompany(you);
      //3、执行
      wed.marry();


      对比多线程的Runnable方法,假如Car类继承了Runnable接口
       //1、建立真实类
      Car car = new Car();
      //2、建立代理类,并引用真实类
      Thread t = new Thread(car);
      //3、执行
      t.start();
*     是不是很相似?因为多线程的Runnable方式实现的多线程也是用静态代理,所以两者是一样的
*
* @author user
*
*/
public class StaticProxy {
        public static void main(String[] args) {
                //1、建立真实类
                You you = new You();
                //2、建立代理类,并引用真实类
                WeddingCompany wed = new WeddingCompany(you);
                //3、执行
                wed.marry();
        }
}
//接口Marry
interface Marry{
        void marry();
}
//真实类
class You implements Marry{

        @Override
        public void marry() {
                System.out.println("you嫁给程序员");
        }
}
//代理类
class WeddingCompany implements Marry{
        private You you;
        public WeddingCompany(){
               
        }
        public WeddingCompany(You you){
                this.you = you;
        }
        @Override
        public void marry() {
                you.marry();
        }
       
}


1 个回复

倒序浏览
学习了.
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马