线程创建之继承(一)

一、继承实现多线程

Rabit.java

package cn.thread;
/*
 * 模拟龟兔赛跑
 * 1.创建多线程 继承Thread   +重run(线程体)
 */
public class Rabit extends Thread {

    @Override
    public void run() {
        for(int i=0;i<100;i++) {
            System.out.println("兔子跑了"+i+"步");
        }
    }
    
}
class Tortoise extends Thread {

    @Override
    public void run() {
        for(int i=0;i<100;i++) {
            System.out.println("乌龟跑了"+i+"步");
        }
    }
    
}

RabitApp.java

package cn.thread;

public class RabitApp {
    public static void main(String[] args) {
        //1.创建子类对象
        Rabit rab=new Rabit();
        Tortoise tor=new Tortoise();
        //2.调用start()方法
        rab.start();
        tor.start();
        
        
        for(int i=0;i<1000;i++) {
            System.out.println("main--"+i);
        }
        
    }
}

效果

线程创建之继承(一)

二、Runnable接口实现多线程

 与继承方式比较:

线程创建之继承(一)

 

   1.静态代理(StaticProxy)

StaticProxy.java

package cn.thread;
/*
 * 静态代理 设计模式
 * 1、真实角色
 * 2、代理角色    持有真实角色的引用
 * 3、二者实现相同的接口
 */
public class StaticProxy {
    public static void main(String[] args) {
        //创建真实角色
        you y=new you();
        //创建代理角色
        WeddingCompany Company=new WeddingCompany(y);
        Company.marry();
    }
}
//接口
interface Marry{
    public abstract void marry();
}
//真实角色
class you implements Marry{

    @Override
    public void marry() {
        System.out.println("结婚了");
        
    }
    
}
//代理角色
class WeddingCompany implements Marry{
    private Marry you;
    
    public WeddingCompany() {

    }

    public WeddingCompany(Marry you) {
        this.you = you;
    }
    private void before() {
        System.out.println("布置猪窝。。。");
    }
    private void after() {
        System.out.println("收拾猪窝.。。。");
    }
    @Override
    public void marry() {
        before();
        you.marry();
        after();
        
    }
    
}

效果:

线程创建之继承(一)

 

上一篇:跟我一起进行kiCad设计(五)


下一篇:跟我一起进行kiCad设计(四)