![](/img/trans.png)
[英]how to make thread wait until another thread has completed that method execution
[英]Make threads wait for the execution of another thread
在Java ZK应用程序的ViewModel中,我有多个执行特定功能的线程。 该函数第一次由任何线程执行需要花费很长时间,但是一旦执行一次,它就会在其他线程执行后立即返回,因为届时它将在缓存中检索到值。 但是它应该只在一个线程中第一次执行,就好像多个线程执行该函数一样,它不会返回到任何一个线程,因为当每个线程调用相同的函数时缓存保持为空,因此返回时间加起来对于他们所有人。 因此,我如何使其他线程等待第一个线程完成,因为这些线程属于不同的对象,因此在此处无法同步该方法。 是否可以在此处使用一个变量,该变量可以与第一个线程已完成的其他线程通信? 请注意,所有线程都属于同一类(即ViewModel)的不同对象,并且它不能扩展线程类或实现Runnable,因为它是ZK框架类。 可以提出任何解决方案。
像这样的东西:
static Object lock;
...
if (objectYouAreHopingHasBeenCached == null) {
synchronized (lock) {
if (objectYouAreHopingHasBeenCached == null) {
// fetch the object, put in in objectYouAreHopingHasBeenCached
}
}
}
return objectYouAreHopingHasBeenCached;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.