0

在我的游戏应用程序中,我有几个工作,我有一个单例类。

我想做的是让每个 Job 将数据存储在单例类中,并且我希望能够通过另一个类从这个单例类中检索与当前 Job 对应的数据。

换句话说,我想要这样的东西:

-Job 1 在单例类中存储“Job1Data”

-Job 2 在单例类中存储“Job2Data”

-另一个类询问当前正在执行的作业的单例类数据(我猜是在当前线程中)并使用它

为此,我假设每个作业都在不同的线程上运行。然后我所做的是将存储在单例类中的每个 Job 的数据存储在一个 Map 中,该 Map 将当前线程 id 与数据映射。

但是我不确定这是我应该这样做的方式,因为它可能不是线程安全的(尽管据说 Hashtable 是线程安全的),并且每次执行 Job 时可能会创建另一个线程,这会使我的 Map 增长很多,从不清除它自己。

我想到了另一种方法来做我想做的事。也许我可以在我的单例中使用 ThreadLocal 类来确保它是线程安全的并且我存储线程特定的数据。但是,我不知道如果每次执行 Job 时都使用另一个线程,它是否会正常工作。此外,我在某处读到,如果不删除数据,ThreadLocal 会产生内存泄漏,问题是我不知道什么时候可以删除数据。

那么,有人能解决我的问题吗?我想确保我想在作业执行期间存储的数据存储在一个全局类中,并且可以被另一个类访问(可以访问正确作业的数据,因此我猜是正确的线程)。

谢谢您的帮助

4

0 回答 0