【问题标题】:Java SwingWorker with same instance of Class?具有相同类实例的Java SwingWorker?
【发布时间】:2013-07-19 04:46:42
【问题描述】:

我有几个 SwingWorker 正在运行,它们都需要 OpenNLP 进行计算。 OpenNLP 需要一些时间进行初始化,所以我想知道这样做的最佳方法是什么? 我想在每个 SwingWorker 中启动一个 OpenNLP 实例并不明智。 我可以初始化一个实例并将其传递给每个 SwingWorker,但问题是我可以/希望仅在 SwingWorkers 中而不是之前初始化 OpenNLP。

所以我想在一个循环中启动所有 Worker,并且在启动后它们(或只是其中一个?)应该初始化 OpenNLP 的实例。当它准备好后,每个 Worker 都应该使用它。

我该怎么做?

谢谢!

【问题讨论】:

    标签: java swing swingworker opennlp


    【解决方案1】:

    让所有摇摆工人都使用一个进行同步延迟初始化的工厂 bean:

    public class OpenNLPFactory {
    
      public synchronized OpenNLP getOpenNLP() {
          if(OpenNLP ready )  { 
              return it
          } else {
              build it and return it.
         }
      }
    
    }
    

    当然,返回的 OpenNLP 对象本身必须是线程安全的...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-18
      • 1970-01-01
      • 2013-11-13
      • 2021-03-16
      • 1970-01-01
      相关资源
      最近更新 更多