package 接口聚合;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.FutureTask;

public class demo {

    public static ExecutorService executorService = Executors.newFixedThreadPool(5);

    public static void main(String[] args) {
        demo d = new demo();
        System.out.println(d.getABInfoOnWebOld());
        System.out.println(d.getABInfoOnWebNew());


    }
    //模拟WEB接口 ---接口串行
    public String getABInfoOnWebOld(){
        long before = System.currentTimeMillis();
        String s = RemoteService.serviceA();
        String s1 = RemoteService.serviceB();
        long cost = System.currentTimeMillis() - before;
        return s+":"+s1+"cost :"+cost;
    }

    //模拟WEB接口 ---接口集合
    public String getABInfoOnWebNew(){
        long before = System.currentTimeMillis();
        Callable<String> taskA = new Callable<String>() {
            public String call() throws Exception {
                return RemoteService.serviceA();
            }
        };
        Callable<String> taskB = new Callable<String>() {
            public String call() throws Exception {
                return RemoteService.serviceB();
            }
        };
        FutureTask futureTaskA = new FutureTask(taskA);
        FutureTask futureTaskB = new FutureTask(taskB);
        executorService.submit(futureTaskA);
        executorService.submit(futureTaskB);
        String result = "";
        try {
            result = futureTaskA.get() +":"+ futureTaskB.get();
            long cost = System.currentTimeMillis() - before;
            result = result+"cost:"+cost;
        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            executorService.shutdown();
        }
        return result;
    }
    //模拟远程服务
    static class RemoteService{

        public static String serviceA(){
            try {
                Thread.sleep(2000L);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            return "A";
        }

        public static String serviceB(){
            try {
                Thread.sleep(3000L);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            return "B";
        }

    }

}

 

相关文章:

  • 2021-11-26
  • 2022-01-21
  • 2022-01-01
  • 2022-01-18
  • 2021-05-16
  • 2021-04-22
  • 2021-07-28
猜你喜欢
  • 2022-12-23
  • 2021-09-06
  • 2022-01-08
  • 2021-05-20
  • 2021-11-16
  • 2022-03-03
  • 2021-07-28
相关资源
相似解决方案