首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Java同时进行函数调用

用Java同时进行函数调用
EN

Stack Overflow用户
提问于 2012-04-18 15:19:38
回答 3查看 980关注 0票数 2

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

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

上面的每个调用都涉及一个数据库调用。像wise一样,有6-7个电话。

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

这些都是一个接一个的顺序调用。

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

有谁能帮我打这样的电话或其他替代方法吗?

提前谢谢。

EN

回答 3

Stack Overflow用户

发布于 2012-04-18 15:21:27

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

创建一个Thread,并重写可运行的。

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

另一种选择是使用高级并发API,特别是遗嘱执行人

但是,您必须确保在并行程序中没有数据竞赛和/或死锁!如果任务之间存在某种依赖关系,这可能并不简单。

票数 7
EN

Stack Overflow用户

发布于 2012-04-18 15:34:01

您可以使用executor框架:

代码语言:javascript
复制
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
}
票数 3
EN

Stack Overflow用户

发布于 2012-04-18 15:27:40

为您希望并行运行的每一个代码块启动一个新线程。

代码语言:javascript
复制
    new Thread(new Runnable(){
       loadUserCache();
    }).start();

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

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

代码语言:javascript
复制
    new Thread(new Runnable(){
       loadUserCache();
       loadAccountCache();
       loadCustomerCache();
    }).start();

是的,这个一般性的话题可以迅速地揭示各种问题。多线程代码可能非常复杂,但在您的例子中,上面的内容可能很好。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10212535

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档