2010-11-30 114 views
2

我在我的类中有一个List对象和两个用于添加和从列表中删除项目的方法。
有多个线程试图访问列表。如何阻塞和通知线程

  1. 我想确保只有一个线程在实例中更新列表。
  2. 如果一个列表是空的,并且一个线程想要删除一个项目,那么我想让线程等待,直到列表中有一个项目。
  3. 当一个项目插入列表 那么我想告诉其他线程 它正在等待再访问列表 该列表不为空 ,他们可以(使用事件)删除的项目。

实现此目标的最佳机制是什么?

回答

2

这是一个多线程的生产者/消费者模式。看看this question

1

ReaderWriterLock对象将非常适合 - 允许并行读取,但会在一个线程写入集合时阻塞所有其他线程。