来看Java多线程:“JUC锁”01之框架
学习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, 让你能够真正掌握接口或抽象类的应用,从而在原来的Java语言基础上跃进一步,更重要的是,设计模式反复向你强调一个宗旨:要让你的程序尽可能的可重用。 Java是一种计算机编程语言,拥有跨平台、面向对java Jive的资料在很多网站上都有,大家可以找来研究一下。相信你读完代码后,会有脱胎换骨的感觉。遗憾的是Jive从2.5以后就不再无条件的开放源代码,同时有licence限制。不过幸好还有中国一流的Java程序员关注它,外国人不开源了,中国人就不能开源吗?这里向大家推荐一个汉化的Jive版本—J道。Jive(J道版)是由中国Java界大名 鼎鼎的banq在Jive 2.1版本基础上改编而成, 全中文,增加了一些实用功能,如贴图,用户头像和用户资料查询等,而且有一个开发团队在不断升级。你可以访问banq的网站 科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。 象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。 有时间再研究一下MVC结构(把Model-View-Control分离开的设计思想) 是一种语言,用以产生「小应用程序(Applet(s)) 至于JDBC,就不用我多说了,你如果用java编过存取数据库的程序,就应该很熟悉。还有,如果你要用Java编发送电子邮件的程序,你就得看看Javamail 了。
页:
[1]