大家在做多线程的时候,用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();
}
}
|
|