何时在Java并发中使用公平模式?

时间:2014-10-19 21:24:12

标签: java concurrency semaphore reentrantlock

我真的很困惑为什么这个功能需要java。当公平模式可以与ex ReentrantLock, ReadWriteLock, Semaphore一起使用时,请分享一些真实的例子。

1 个答案:

答案 0 :(得分:1)

如果您的情况需要更好地表达订单,那么公平是有用的。

我使用了公平锁的情况,是在一个日志记录队列中(不,我不能使用log4j或其他),我想要并发,同时仍然设法以类似于的顺序记录输出命令它到了。

我本来可以使用并发队列,但还有其他因素在起作用,并且锁定线程级别比拥有一个队列可能线程可以在再次轮到它们之前添加多个值更好。这很复杂......但是,添加一个公平的锁定允许项目以代表性的顺序进行。

事实上,将公平锁定视为大约是线程的到达顺序队列是有用的,并且线程不能只是丢弃它们的负载并离开并做其他事情,如并发队列会做。在这里排队线程,而不是工作负载。

请注意,订单无法保证,但在大多数情况下,订单与此无法区分。