|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
学习JAVA的目的更多的是培养自身的工作能力,我觉得工作能力的一个核心就是:独立思考能力,因为只有独立思考后,才会有自己的见解
依据锁的增加到Java中的工夫,Java中的锁,能够分为"同步锁"和"JUC包中的锁"。
同步锁
即经由过程synchronized关头字来举行同步,完成对合作资本的互斥会见的锁。Java1.0版本中就已支持同步锁了。
同步锁的道理是,关于每个对象,有且唯一一个同步锁;分歧的线程能配合会见该同步锁。可是,在统一个工夫点,该同步锁能且只能被一个线程猎取到。如许,猎取到同步锁的线程就可以举行CPU调剂,从而在CPU上实行;而没有猎取到同步锁的线程,必需举行守候,直到猎取到同步锁以后才干持续运转。这就是,多线程经由过程同步锁举行同步的道理!
关于"同步锁"的更多内容,请参考"Java锁的基本部分"的内容。
JUC包中的锁
比拟同步锁,JUC包中的锁的功效加倍壮大,它为锁供应了一个框架,该框架同意更天真地利用锁,只是它的用法更难而已。
JUC包中的锁,包含:Lock接口,ReadWriteLock接口,LockSupport堵塞原语,Condition前提,AbstractOwnableSynchronizer/AbstractQueuedSynchronizer/AbstractQueuedLongSynchronizer三个抽象类,ReentrantLock独有锁,ReentrantReadWriteLock读写锁。因为CountDownLatch,CyclicBarrier和Semaphore也是经由过程AQS来完成的;因而,我也将它们归结到锁的框架中举行先容。
先看看锁的框架图,以下所示。
01.Lock接口
JUC包中的Lock接口撑持那些语义分歧(重进、公允等)的锁划定规矩。所谓语义分歧,是指锁但是有"公允机制的锁"、"非公允机制的锁"、"可重进的锁"等等。"公允机制"是指"分歧线程猎取锁的机制是公允的",而"非公允机制"则是指"分歧线程猎取锁的机制长短公允的","可重进的锁"是指统一个锁可以被一个线程屡次获取。
<p>
轮性能微软曾做过一个例子,就是同一个项目用java和.net来作,结果开发周期,.net是java的一半,性能java是.net的十分之一,代码量java是.net的三倍。呵呵,这说明了什么,.net的全方位比java好。但是有的人说.net不能跨平台,这个问题我和我同学曾讨论过,都认为微软的.net很可能早都可以跨平台了,但是微软为了保护他们的操作系统,所以才没有推出跨平台的.net,只是推出了跨语言的.net, |
|