zoukankan      html  css  js  c++  java
  • 最简单的单线程变多线程的例子

    背景

    不知道你项目里有么有这样一个函数,这个函数里调用了大概十几来个函数,这十几个函数依次的从头写到位,而且这几个函数都是相对独立的,谁先执行谁后执行都互不影响。

    最简单的优化

    最简单的优化,原本这几个操作是单线顺序执行的,只要把互相独立的操作变成多线程的就可以了

    下面是一个最直接的例子:

    public class SingleThread {
    
        @Test
        public void single() {
            long time1 = System.currentTimeMillis();
            fun1();
            fun2();
            long time2 = System.currentTimeMillis();
            System.out.println(time2 - time1);
        }
    
        @Test
        public void multiple() throws Exception {
            ExecutorService executor = Executors.newFixedThreadPool(2);
            long time1 = System.currentTimeMillis();
            Future<Object> future1 = executor.submit(this::fun1);
            Future<Object> future2 = executor.submit(this::fun2);
            future1.get();
            future2.get();
            long time2 = System.currentTimeMillis();
            System.out.println(time2 - time1);
        }
    
        public Object fun1() {
            try {
                Thread.sleep(1000L);
            } catch (Exception ignore) {
            }
            return "1";
        }
    
        public Object fun2() {
            try {
                Thread.sleep(2000L);
            } catch (Exception ignore) {
            }
            return "2";
        }
    }
    

    从上面的例子可以看出,single()方法是单线程的,而multiple()方法是多线程的,效率提高的不是一星半点。

  • 相关阅读:
    【转】数据安全保护之访问控制技术
    WebRTC介绍及简单应用
    【转】Weblogic的集群
    【转载】桥接Microsoft Word和浏览器
    http Content-type对照表
    CentOS7.1下JDK+Tomcat应用环境搭建
    关于silverlight5 打印功能收集
    【转】2014年25款最好的jQuery插件
    lesson11
    lesson 9
  • 原文地址:https://www.cnblogs.com/eaglelihh/p/15487228.html
Copyright © 2011-2022 走看看