标签: java multithreading rabbitmq
我有一种可以由两种类型的任务使用的特定资源:同时由许多不同线程运行的正常任务和单个线程很少运行的特殊任务。
我的目标是:
确切地说,我有一个Rabbit-MQ队列,该资源可以访问该队列以弹出消息。任何调用我的webservice的用户都可以同时使用此资源(弹出消息)。但是,我有一个特殊的功能,它清除队列并用来自DB的消息重新填充它。
我的挑战是仅针对此特殊任务锁定对象,但同时允许正常任务同时使用它。
答案 0 :(得分:2)
你的目标听起来完全像ReadWriteLock的用例,它只允许一个作者,但如果没有作家,则任意读者。特殊任务可以进行写锁定,所有其他任务都可以进行读锁定。
ReadWriteLock