一般来说,锁定Java有多贵?
特别是在我的情况下:我有一个多线程应用程序,其中有一个主循环从DelayQueue中取出对象并处理它们(使用poll())。在某些时候,不同的线程必须从队列中删除错误的元素(使用remove())。
鉴于remove()相对不常见,我担心锁定每个poll()会导致代码变慢。我的担忧是否合理?
答案 0 :(得分:11)
除非您对应用进行分析并发现这是一个瓶颈,否则它们是不合理的。
一般而言,无关紧要的锁定(即大多数时候不必等待某人释放的锁定)随着Java 5和Java 6的一些变化而变得便宜很多。
如果它足够快,可以安全,简单地实施它。
答案 1 :(得分:4)
您是否进行了一些测量并发现锁定太慢?没有?然后它不是。
但老实说:太多人担心太多无关紧要的事情。在你担心“++ i”是否比“i ++”或类似的东西更快之前,让代码工作。