java5的java.util.concurrent.Semaphore和java5之前通过synchronized+wati+notify方式相比有什么优势?

解决方案 »

  1.   

    信号量只是提供了一种互斥的机制,使用 wait, notify 也能实现类似的信号量处理,如果 API 提供了信号量的类那我们就应该尽量去使用它。当然了,如果都封装成 API 了,那还提供了一些其他的功能。
      

  2.   

    concurrent包下面的类都是针对多核优化的,推荐使用,你的代码在多核的机器上才不会变慢。
      

  3.   


    是的,用concurrent做同步,在多线程时的性能上比sync高的多
      

  4.   

    机制应该是一样的, Semphore 的作用并不只在于lock 一个thread ,在性能上或许synchonized要高于semphore , 为什么,因为synchonized可以控制lock 的锁粒度,虽然Semphore 可以调整作用域。。