在我的游戏应用程序中,我有几个Jobs,我有一个单例类。
我想要做的是每个Job在单例类中存储数据,我希望能够从这个单例类中检索通过另一个类对应当前Job的数据。
换句话说,我想有这样的事情:
-Job 1在单件类中存储“Job1Data”
-Job 2在单件类中存储“Job2Data”
- 另一个类询问当前正在执行的作业的单例类数据(在我猜的当前线程中)并使用它
为了执行此操作,我假设每个作业都在不同的线程上运行。然后,我所做的是存储在单例类中的每个Job的数据存储在Map中,该Map将当前线程id与数据进行映射。
但是我不确定这是我应该这样做的方式,因为它可能不是线程安全的(尽管Hashtable被认为是线程安全的)并且每次执行Job时可能会创建另一个线程我的地图长得很多,从不清楚自己。
我想到了另一种做我想做的事情。也许我可以在我的单例中使用ThreadLocal类来确保它是线程安全的并且我存储特定于线程的数据。但是,如果每次执行Job时都使用另一个线程,我不知道它是否能正常工作。此外,我读到某个地方,如果没有删除数据,ThreadLocal会创建内存泄漏,问题是我不知道何时可以删除数据。
那么,有人会为我的问题找到解决方案吗?我想确保我想在Job执行期间存储的数据存储在一个全局类中,并且可以被另一个类访问(可以访问正确的Job的数据,因此我想是正确的线程)。
感谢您的帮助