我有两个线程。一个是客户,另一个是生产者。
我想在客户中调用一个名为 READ 的函数。这应该无限期地阻塞,直到生产者把数据放在上面。
我该怎么做 ?谢谢 !
我有两个线程。一个是客户,另一个是生产者。
我想在客户中调用一个名为 READ 的函数。这应该无限期地阻塞,直到生产者把数据放在上面。
我该怎么做 ?谢谢 !
我建议您使用LinkedBlockingQueue
. 这是模拟“生产者-消费者”问题的最简单方法。一个线程使用put
方法将值放入队列,另一个使用take
阻塞的数据(线程等待直到队列不为空)。使用LinkedBlockingQueue
非常简单,因为您不必同步您的方法。一切都已经完成了。
如果要放入队列的数据需要同步,即生产者生成一个对象并将其存储在队列中;消费者必须消费生产者放置的对象,使用 SynchronousQueue 或 new TransferQueue 应该是一个更好的主意
使用thread.wait()
然后thread.notify()
。thread.wait()
等到thread.notify()
事情发生。