||
Java多线程的协调主要通过Semaphore、Volatile、Lock以及Synchronized来实现,其中Semaphore、Voatile以及Lock的使用调优主要靠编程者来实现,而Synchronized经过JVM的调优(锁自升、锁消除、锁膨胀)在使用和性能上取得较好的平衡,用例较多。
一般情况下Lock的性能是Synchronized的4~5倍,Semaphore比Synchronized慢10~20个百分点(Synchronized的重量级锁就是通过Semaphore实现的),Atomic包下的原子锁性能比Lock高一个数量级。
线程的中断机制主要使用在线程阻塞的情况下(wait、sleep以及join),中断会触发阻塞线程的InterruptedException,只要在阻塞代码处捕捉该异常即可实现线程的退出。
Synchronized场景下,wait会释放锁而sleep则不会;其他场景需要显式释放锁。
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-6-2 23:54
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社