在我的应用程序中,我以以下方式加载缓存。
上述每个调用都涉及一个数据库调用。像怀斯一样,有6-7个电话。
当我的应用程序加载时,我必须等待缓存加载。
那些都是一个接一个的顺序调用。
如果我能找到一种方法并行地进行这些调用,那么应用程序加载期间的等待时间将会大幅下降。
有人能帮我打这样的并行电话或其他任何替代方法吗?
提前感谢。
为要并行运行的每个代码块启动一个新线程。
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();
是的,这个一般性的话题会很快引发各种各样的问题。多线程代码可能相当复杂,但在您的情况下,上面的代码可能很好。
您可以使用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
}
您正在寻找多线程。看看官方的并发教程。
创建一个Thread
,并覆盖runnable。
在线程上调用start()
时,每个线程都将被并行调用。
另一种方法是使用高级并发API,尤其是执行器。
但是,您必须确保并行程序中没有数据争用和/或死锁![如果任务之间存在某种依赖关系,那么这可能不是小事]。
我目前试图控制静态功能运行时,例如单击静音,然后静音调用。目前,当添加或删除通道时,一切都在运行,但我的for lope根本不做任何事情。 我只是想控制您将在下面看到的代码何时在服务器端被调用,如果有意义的话,不需要添加或删除通道。 我使用的是express、AriJS客户端、JQuery和AsteriskAri。 有人能解释一下我是如何做到这一点的吗? 只需运行该函数,即静音阵列中的所有通道。
问题内容: 构造函数何时被调用? 创建对象之前。 在对象创建期间。 创建对象之后。 问题答案: 分配对象内存,初始化具有初始值的字段变量,然后调用构造函数,但是其代码在对象超类的构造函数代码之后执行。
问题内容: 所以我有一个功能可以检查预订表中有多少取消: 要在SQL中执行他,我使用: 我的结果是: 我的问题是有人可以帮助我在JAVA中调用该函数吗,我尝试过但没有运气。 问题答案: Java提供了这样的目的。 将打印与在pl / sql中相同的内容。根据文档, 创建一个CallableStatement对象以调用数据库存储过程。CallableStatement对象提供了用于设置其IN和OUT
我有以下代码 我试图对流进行基准测试,但在一次又一次地调用相同的函数时,执行时间稳步下降
问题内容: 我目前正在尝试诺言,并且有一个非常基本的问题! 在一个Promise链中,调用同步函数是否是错误的做法?例如: 还是应该将我的同步功能重构为也返回承诺? 问题答案: 在一个Promise链中,调用同步函数是否是错误的做法? 不,这根本不是一个坏习惯。这是许多预期和有用的实践之一。 您可以完全自由地(在处理程序中)调用promise链中的同步函数或异步函数,然后再返回新的promise。
问题内容: 这给出了错误 那么如何评估这样的查询呢? 问题答案: 我建议您查看有关提升的要求,因为当前的脚本没有太大意义。 另外,请查看elasticsearch 查询DSL的文档。它提供复合查询和简单查询,您可以将它们组合在一起。如错误所示,您不能在自定义分数查询中放入过滤器。您可以在自定义分数查询中使用过滤查询: 或使用像这样的顶级过滤器: 这两个选项的区别在于,如果您在搜索请求中也进行了构面