繁体   English   中英

用Java进行同步函数调用

[英]Making simultaneous function calls in Java

在我的应用程序中,我按以下方式加载缓存。

  1. 加载用户缓存loadUserCache();
  2. 加载帐户缓存loadAccountCache();
  3. 加载客户缓存loadCustomerCache();

上述每个调用都涉及数据库调用。 像智者一样,有6-7个电话。

当我的应用程序被加载时,我必须等待直到加载缓存。

这些都是一个接一个的顺序呼叫。

如果我能找到一种方法来并行进行这些调用,那么应用程序加载期间的等待时间将大幅减少。

有人可以帮我做这样的并行电话或任何其他替代方法吗?

提前致谢。

您正在寻找多线程。 看看官方的并发教程

创建一个Thread ,并覆盖runnable。

当您在线程上调用start()时,每个线程将相互并行调用。

另一种方法是使用高级并发API ,尤其是Executors

您必须确保在并行程序中没有数据争用和/或死锁 [如果任务之间存在某种依赖关系,这可能并不重要]。

您可以使用执行程序框架:

public static void main(String args[]) throws InterruptedException {
    ExecutorService executor = Executors.newFixedThreadPool(3);
    Runnable user = new Runnable() {
        @Override
        public void run() {
            loadUserChache();
        }
    };
    Runnable account = new Runnable() {
        @Override
        public void run() {
            loadAccountCache();
        }
    };
    Runnable customer = new Runnable() {
        @Override
        public void run() {
            loadCustomerCache();
        }
    };

    executor.submit(user);
    executor.submit(account);
    executor.submit(customer);

    executor.shutdown();
    executor.awaitTermination(10, TimeUnit.SECONDS); //handle timeout here
}

为要并行运行的每个代码块启动一个新的Thread。

    new Thread(new Runnable(){
       loadUserCache();
    }).start();

    new Thread(new Runnable(){
       loadAccountCache();
    }).start();

    new Thread(new Runnable(){
       loadCustomerCache();
    }).start();

要么

    new Thread(new Runnable(){
       loadUserCache();
       loadAccountCache();
       loadCustomerCache();
    }).start();

是的,这个一般性主题可以快速打开各种问题。 多线程代码可能非常复杂,但在您的情况下,上述情况可能会很好。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM