创建线程的一般方式和匿名内部类方式对比——实现runnable接口,重新run方法

启动:使用静态代理设计模式

优点:可同时实现继承,避免单继承局限性

一般方式:

Programer.java
/**
 * 真实角色
 *
 * @author :liuqi
 * @date :2018-06-12 17:39.
 */
public class Programer implements Runnable {
    @Override
    public void run() {
        for (int i = 0; i < 5; i++) {
            System.out.println("一边coding: ");
        }
    }
}
测试类
Demo03.java
/**
 * 测试类:一般方式之实现runnable接口创建线程
 *
 * @author :liuqi
 * @date :2018-06-12 17:44.
 */
public class Demo03 {
    public static void main(String[] args) {
        // 创建真实角色
        Programer pro = new Programer();
        // 创建代理角色+真实角色引用
        Thread proxy = new Thread(pro);
        // 调用start方法启动线程
        proxy.start();
        for (int i = 0; i < 7; i++) {
            System.out.println("一边聊QQ");
        }
    }
}

运行结果:

一边聊QQ
一边聊QQ
一边聊QQ
一边聊QQ
一边聊QQ
一边聊QQ
一边聊QQ
一边coding:
一边coding:
一边coding:
一边coding:
一边coding:

匿名内部类方式:

ThreadDemo.java
/**
 * 使用匿名内部类的方式创建线程
 *
 * @author :liuqi
 * @date :2018-06-12 15:02.
 */
public class ThreadDemo {
    // 继承thread类实现多线程
    public static void main(String[] args) {
        /*new Thread() {
            @Override
            public void run() {
                for (int x = 0; x < 5; x++) {
                    *//*System.out.println(Thread.currentThread().getName() + "--"
                            + x);*//*
                    System.out.println("rabit run " + "--"
                            + x);
                }
            }
        }.start();
        ;
        new Thread() {
            @Override
            public void run() {
                for (int x = 0; x < 5; x++) {
                    *//*System.out.println(Thread.currentThread().getName() + "--"
                            + x);*//*
                    System.out.println("tortoise run " + "--"
                            + x);
                }
            }
        }.start();
        ;*/
        // 实现runnable接口,创建多线程并启动
        new Thread(new Runnable() {
            @Override
            public void run() {
                for (int x = 0; x < 5; x++) {
                    System.out.println(Thread.currentThread().getName() + "--"
                            + x);
                }
            }
        }) {
        }.start();
    }
}

运行结果:

Thread-0--0
Thread-0--1
Thread-0--2
Thread-0--3
Thread-0--4

参考:https://www.cnblogs.com/fuck1/p/5373700.html

代码地址:https://github.com/yuki9467/TST-javademo/tree/master/src/main/thread

猜你喜欢

转载自www.cnblogs.com/yuki67/p/9176317.html