zoukankan      html  css  js  c++  java
  • 创建线程的一般方式和匿名内部类方式对比——继承thread类,重写run()方法

    第一种:继承thread类,重写run()方法

    一般方式:
    Demo01.java
    /**
     * 创建线程的第一种方式:继承thread类,重写run()方法
     *
     * @author :liuqi
     * @date :2018-06-12 15:12.
     */
    public class Demo01 {
        public static void main(String[] args) {
            Rabit r = new Rabit();
            Tortoise t = new Tortoise();
            // 调用start方法启动线程,不要调用run方法由内部自己调用
            r.start();
            t.start();
            for (int i = 0; i < 5; i++) {
                System.out.println("main --> " + i);
            }
        }
    }
    Rabit.java
    /**
     * 兔子线程
     *
     * @author :liuqi
     * @date :2018-06-12 15:14.
     */
    public class Rabit extends Thread {
        @Override
        public void run() {
            for (int i = 0; i < 5; i++) {
                System.out.println("rabit run " + i);
            }
        }
    }
    Tortoise.java
    /**
     * 乌龟线程
     *
     * @author :liuqi
     * @date :2018-06-12 15:17.
     */
    public class Tortoise extends Thread {
        @Override
        public void run(){
            for (int i = 0; i < 5; i++) {
                System.out.println("Tortoise run " + i);
            }
        }
    }

    运行结果:

    main --> 0
    main --> 1
    Tortoise run 0
    Tortoise run 1
    Tortoise run 2
    Tortoise run 3
    Tortoise run 4
    main --> 2
    rabit run 0
    main --> 3
    rabit run 1
    rabit run 2
    main --> 4
    rabit run 3
    rabit run 4

    匿名内部类方式:

    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();
            ;
        }
    }

    运行结果:

    rabit run --0
    rabit run --1
    rabit run --2
    rabit run --3
    rabit run --4
    tortoise run --0
    tortoise run --1
    tortoise run --2
    tortoise run --3
    tortoise run --4

    lamda方式:

    new Thread(() -> {
      for(int a=0; a>5; a++){
        System.out.println(Thread.currentThread().getName() + ", a=" + a);
        }}, "thread 1").start();

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

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

  • 相关阅读:
    Markdown示例
    初识Markdown
    Ubuntu源整理
    Vi编辑器入门
    Ubuntu,Linux入门系统
    [其他]volatile 关键字
    Qt5:随窗口大小变化背景图片自动缩放的实现
    Qt5:不规则按钮的实现---通过贴图实现
    windows编程:创建DLL
    [转]Firefox拦截12306订票网站的解决办法
  • 原文地址:https://www.cnblogs.com/yuki67/p/9173430.html
Copyright © 2011-2022 走看看