从处理程序中,我启动一个单独的线程来更新Dynamo表,在该表中,我保留每个用户的API调用计数。问题是,在处理程序完成之后,有时数据库会更新,而有时则不会,因此我选择使用相同的初始线程进行数据库更新,而现在数据库总是会更新,因此这意味着另一个线程有时会完成,而有时它会没有。它与lambda完成时冻结处理程序调用的方式有关吗?在冻结处理程序容器之前,如何确保单独的线程完成?我正在使用旧的Java Runnable接口和Thread类。
您有两种选择解决此问题:
Java
方式:假设您在主线程运行时启动新线程,则可以在主线程完成时(即在join()
之前)将return
辅助线程。样本:// Main thread executing...
Thread t = new Thread(
new Runnable() {
public void run () {
//do something
}
}
);
t.start(); //Secondary thread starts
// Main thread continues execution
t.join();//Main thread will wait for the secondary to finish
return ...;