繁体   English   中英

使线程等待另一个线程的执行

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM