如何实现两个线程列表之间的互斥,但不能实现列表中线程的互斥?

时间:2019-07-16 06:14:17

标签: java multithreading synchronization

我有一个共享资源的场景,该资源的多个使用者(线程)(请说 RES )。这些使用者只是以只读方式消耗该资源。 同样,有一个修饰符(另一个线程)偶尔运行并更新资源RES。

如果修改正在进行,我不希望我的使用者线程使用资源RES。为了实现此方案,我创建了一个监视对象,消费者必须使用该监视对象才能继续使用RES,并且修饰符也是如此。

由于代码可以正常工作,但有可能进行优化,这实际上是我不应该使使用者线程彼此同步,因为它们没有在资源中进行任何修改。我试图实现的是两组线程之间的同步。 我的意思-

  • 列出具有使用者线程的 TL1
  • 列出具有修改器线程的 TL2

TL1 TL2 应该整体上是相互排斥,但内部 TL1和TL2。

由于我无法提出任何此类解决方案,因此我尝试的另一种选择是创建10个监视对象,如果消费者获得任何监视对象,那是一件好事,但是修饰符必须获得所有进行修改之前,请先监视这些监视器对象。在我的用例中,由于修改的频率非常低,从消费者的角度来看,它将带来更好的吞吐量。

对此需要建议。

0 个答案:

没有答案