• 最简单的单线程变多线程的例子


    背景

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

    最简单的优化

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

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

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

  • 相关阅读:
    fullCalendar改造计划之带农历节气节假日的万年历(转)
    Linked List Cycle
    Remove Nth Node From End of List
    Binary Tree Inorder Traversal
    Unique Binary Search Trees
    Binary Tree Level Order Traversal
    Binary Tree Level Order Traversal II
    Plus One
    Remove Duplicates from Sorted List
    Merge Two Sorted Lists
  • 原文地址:https://www.cnblogs.com/eaglelihh/p/15487228.html
Copyright © 2020-2023  润新知