黑马程序员技术交流社区

标题: 关于用Runnable接口实现多线程与静态代理的关系 [打印本页]

作者: Без_тебя    时间: 2014-6-19 23:45
标题: 关于用Runnable接口实现多线程与静态代理的关系
大家在做多线程的时候,用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();
        }
       
}



作者: 初升的晨曦    时间: 2014-6-20 11:19
学习了.




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2