0

我正在开发一个使用 Java EE 开发的基于多线程的 Web 应用程序。

我在该应用程序中有两个线程,类似于生产者和消费者,其中一个线程不断地从第三方 API(套接字连接)读取数据,并将其更新到缓存中。另一个线程(消费者)不断尝试从缓存中读取。

我的问题是,当且仅当数据发生变化时,是否有任何方法可以提高消费者线程的性能(我的意思是它只从缓存中读取数据)。

4

2 回答 2

2

当然,使用BlockingQueue(例如选择一个实现ArrayBlockingQueue)。它将阻塞(暂停)消费者调用take,直到缓冲区中有可用数据。

于 2012-09-17T09:39:27.977 回答
0

有很多方法可以做。

生产者-消费者队列(Java 中的 BlockingQueue,正如 Tudor 所建议的那样)是一种方式。

你也可以使用 wait()/notify() 让消费者等待一个对象,生产者在有更新时通知消费者。从 Java5 开始,您甚至可以将 Condition 用于此目的。

于 2012-09-17T09:52:07.210 回答