在我的应用程序中,我以以下方式加载缓存。
上面的每个调用都涉及一个数据库调用。像wise一样,有6-7个电话。
当我的应用程序被加载时,我必须等待缓存被加载。
这些都是一个接一个的顺序调用。
如果我能找到一种方法来并行地进行这些调用,那么应用程序加载期间的等待时间将大大减少。
有谁能帮我打这样的电话或其他替代方法吗?
提前谢谢。
发布于 2012-04-18 15:21:27
你在寻找多线程。看看官方的并发教程。
创建一个Thread,并重写可运行的。
当您在线程上调用start()时,每个线程将被并行地调用。
另一种选择是使用高级并发API,特别是遗嘱执行人。
但是,您必须确保在并行程序中没有数据竞赛和/或死锁!如果任务之间存在某种依赖关系,这可能并不简单。
发布于 2012-04-18 15:34:01
您可以使用executor框架:
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
}发布于 2012-04-18 15:27:40
为您希望并行运行的每一个代码块启动一个新线程。
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();是的,这个一般性的话题可以迅速地揭示各种问题。多线程代码可能非常复杂,但在您的例子中,上面的内容可能很好。
https://stackoverflow.com/questions/10212535
复制相似问题