我有两个不同的线程,一个将信息放入Gemfire区域,另一个从相同的Gemfire区域读取和删除相同的信息。问题是:如果第二个线程很忙,第一个线程会继续将信息放入Gemfire区域。
什么是需要的-阻止第一线,如果一些限制的项目在区域达到。可以手动实现这一点,但Gemfire中是否已经存在相同的机制?
发布于 2012-10-23 02:29:11
GemFire没有任何类型的阻塞队列抽象,所以,你是对的,你必须手动实现它。然而,我也想问一下,为什么您觉得有必要以这种方式限制GemFire?如果您担心内存消耗,则可以始终将区域配置为在达到特定条目计数阈值或达到堆阈值时溢出到磁盘。
发布于 2015-09-16 07:32:11
不要认为gemfire有阻止put操作的选项,但它有溢出到磁盘的选项。
但是,如果您仍然想使用阻塞选项。您可以在您的地域上使用CacheListener,并且可以执行大小操作和块/睡眠操作。在listener完成之前,Put操作将被阻止。
而且您可以很容易地重用/删除/添加侦听器组件。
https://stackoverflow.com/questions/12597588
复制相似问题