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()方法是多线程的,效率提高的不是一星半点。

  • 相关阅读:
    XCode Playground Overview
    Swift开发学习(二):Playground
    swift网址
    swift关于is和as的解释
    Swift之 ? 和 !
    Swift 学习之二十一:?和 !(详解)
    Swift学习三
    Makefile project
    20171110面试笔记 服务器端程序员+C/C++开发
    关键字
  • 原文地址:https://www.cnblogs.com/eaglelihh/p/15487228.html
Copyright © 2011-2022 走看看