有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

在JavaZK应用程序的ViewModel中,我有多个线程执行一个特定的函数。任何线程第一次执行该函数都需要很长时间,但在执行一次后,当其他线程执行该函数时,它会立即返回,因为此时它已在缓存中检索到值。但是第一次应该只由一个线程执行,就像多个线程执行该函数一样,它不会返回到其中任何一个线程,因为当每个线程调用相同的函数时,缓存仍然是空的,因此,所有线程的返回时间相加。 因此,我如何让其他线程等待第一个线程完成,因为线程属于不同的对象,因此同步方法在这里不起作用。这里可以使用一个变量来与第一个线程已经完成的其他线程通信吗?请注意,所有线程都属于同一类的不同对象,即ViewModel,它不能扩展thread类或实现Runnable,因为它是ZK框架类。 可以提出任何解决方案


共 (1) 个答案

  1. # 1 楼答案

    比如:

    static Object lock;
    
    ...
    
    if (objectYouAreHopingHasBeenCached == null) {
      synchronized (lock) {
        if (objectYouAreHopingHasBeenCached == null) {
           // fetch the object, put in in objectYouAreHopingHasBeenCached
        }
      }
    }
    return objectYouAreHopingHasBeenCached;