JAVA基本的同步机制

来源:互联网 发布:淘宝怎样请人代付 编辑:程序博客网 时间:2024/05/16 08:22

JAVA的同步机制——线程同步辅助类

这一小节主要介绍JAVA中有哪些同步机制,下面几个小节会分别介绍这些同步机制的用途,希望可以让大家对JAVA的同步机制有一定了解。好了,我们开始吧!

(1)synchronized关键字,这个相信大家很了解,最好能理解其中的原理,这里不多少,以后会专门分享一篇关于synchronized关键字的文章;

(2)Lock接口及其实现类,如ReentrantLock.ReadLock和ReentrantReadWriteLock.WriteLock。

以上两种都是最基本的,也是大家在实际项目中最常用的,一般用lock的比较多,能提高效率,典型的对比如Hashtable和CurrentHashMap的性能对比;

那还有那些更高级的同步机制:

(3)信号量(Semaphore):是一种计数器,用来保护一个或者多个共享资源的访问,它是并发编程的一种基础工具,大多数编程语言都提供这个机制,这也是操作系统中经常提到的。

(4)CountDownLatch:是Java语言提供的同步辅助类,在完成一组正在其他线程中执行的操作之前,他允许线程一直等待,这个类的使用已经在我的博客中了,大家可以去看看,自己去体验一下,平时编程不常用,但是实际中可能很有用,还是要多了解一下的;

(5)CyclicBarrier:也是java语言提供的同步辅助类,他允许多个线程在某一个集合点处进行相互等待;这个感觉慢有意思的,我的博客中已经有了,大家可以去看看

(6)Phaser:也是java语言提供的同步辅助类,他把并发任务分成多个阶段运行,在开始下一阶段之前,当前阶段中所有的线程都必须执行完成,JAVA7才有的特性。

(7)Exchanger:他提供了两个线程之间的数据交换点。

总结一下吧,这些同步机制很多,但是所有的同步机制都是基于信号量Semaphore来实现的。在应用程序中,任何时候都可以使用信号量来保护临界区,这是一个很基础的同步机制。