• Java-多线程-Thread类-继承方式


    1、常规的单线程

    package cn.bruce.Thread;
    
    //如何创建和启动一个线程
    //创建Thread子类对象
    //子类对象调用方法start()
    //让线程程序执行,JVM调用线程中的run
    public class MoreThreadDemo {
        public static void main(String[] args) {
            long ss = System.currentTimeMillis();
            SubThread st = new SubThread();
            st.run();// 如果是直接调用run的话还是单线程
            // st.start();
        new Thread(){public void run(){System.out.println("!!!");}}.start();//也可以使用这样的匿名内部类方式开启线程
    long s = System.currentTimeMillis(); long r = fun(45); long e = System.currentTimeMillis(); System.out.println("main..." + (e - s)); System.out.println(r); long ee = System.currentTimeMillis(); System.out.println("result..." + (ee - ss)); } public static long fun(long a) { if (a == 1) { return 1; } else if (a == 2) { return 1; } return fun(a - 2) + fun(a - 1); } } // 定义子类,继承Thread // 重写方法run class SubThread extends Thread { public void run() { long s1 = System.currentTimeMillis(); long r1 = fun1(45); long e1 = System.currentTimeMillis(); System.out.println("run..." + (e1 - s1)); System.out.println(r1); } public static long fun1(long a) { if (a == 1) { return 1; } else if (a == 2) { return 1; } return fun1(a - 2) + fun1(a - 1); } }

     需要6874ms

    2、开辟一个线程后

    package cn.bruce.Thread;
    
    //如何创建和启动一个线程
    //创建Thread子类对象
    //子类对象调用方法start()
    //让线程程序执行,JVM调用线程中的run
    public class MoreThreadDemo {
        public static void main(String[] args) {
            long ss = System.currentTimeMillis();
            SubThread st = new SubThread();
            // st.run();// 如果是直接调用run的话还是单线程
            st.start();//开辟线程运行
            long s = System.currentTimeMillis();
            long r = fun(45);
            long e = System.currentTimeMillis();
            System.out.println("main..." + (e - s));
            System.out.println(r);
            long ee = System.currentTimeMillis();
            System.out.println("result..." + (ee - ss));
        }
    
        public static long fun(long a) {
            if (a == 1)
            {
                return 1;
            } else if (a == 2)
            {
                return 1;
            }
            return fun(a - 2) + fun(a - 1);
        }
    
    }
    
    // 定义子类,继承Thread
    // 重写方法run
    class SubThread extends Thread {
        public void run() {
            long s1 = System.currentTimeMillis();
            long r1 = fun1(45);
            long e1 = System.currentTimeMillis();
            System.out.println("run..." + (e1 - s1));
            System.out.println(r1);
        }
    
        public static long fun1(long a) {
            if (a == 1)
            {
                return 1;
            } else if (a == 2)
            {
                return 1;
            }
            return fun1(a - 2) + fun1(a - 1);
        }
    }

     只需要4042ms了

  • 相关阅读:
    一个购物网站的思路设计分享
    B/S和C/S的区别(转)
    TreeSet
    计算出给你一个随机乱敲的一个字符串最多的一个
    JavaScript来实现打开链接页面(转载)
    js小数计算小数点后显示多位小数(转)
    java中使用 正则 抓取邮箱
    浅谈 正则表达式
    jQuery中each()、find()、filter()等节点操作方法
    Xcode插件VVDocumenter Alcatraz KSImageNamed等安装
  • 原文地址:https://www.cnblogs.com/BruceKing/p/13554459.html
Copyright © 2020-2023  润新知