我只是在以下情况下寻找高性能的模式:

我们有N个线程正在执行一些处理,在此处理过程中,可能需要执行封装在Java类中的“特殊”代码。这些对象不是线程安全的,但是我可以让M个对象并行执行。

因此,我从N个线程中调用了M个对象的池。

   thread 1 :
      doing thinks
      PoolObject -> Object1.execute()   // no synchronize

   thread 2 :
      doing thinks
      PoolObject -> Object2.execute()   // no synchronize

   thread n :
      doing thinks
      PoolObject -> wait object is available
      PoolObject -> Object2.execute()


ArrayBlockingQueue是可以使用的实现,但它使用的是ReentrantLock(又名sync)。这是类似于ConcurrentHashMap的解决方案,它使用了compareAndSwapLong之类的机制。

是否有一些现有代码可在诸如ConcurrentHashMap这样的高性能场景中执行此操作?

最佳答案

最终,我找到了ConcurrentLinkedQueue类。

对于那些想知道CAS是为什么还是同步的人,可以阅读this

07-24 20:17