仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 878|回复: 13
打印 上一主题 下一主题

[学习教程] 来看分析java.util.concurrent锁

[复制链接]
若相依 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:28:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
不得不提一下的是:.net网页编程是看到java红,而开发出来的工具。
1.导言
程序的功能剖析是使用程序开辟过程当中的一个主要方面。这个事情通常为由一些专业职员来完成的,他们的方针是在一个特定的平台上,进步代码的功能。当程序是运转在多核平台的多线程大概并路程序的时分,进步功能这个成绩就变得加倍坚苦了。由于在如许的情形下,不但必要思索代码的功能,还必要思索代码的可伸缩性。
跟着Java5中引进了java.util.concurrent (JUC)包,在Java言语中呈现了一种新的锁。JUC包利用得愈来愈广泛,由于更多的使用程序必要为了多核体系而开辟或细心地调优。固然JLM能够找到传统的Java锁的具体的合作信息,可是却没有一样的工具可以找到java.util.concurrent.locks包的锁合作信息。Sun/Oracle、IBM,另有其他Java厂商也都没有如许的工具。缺少对JUC锁的分析工具恰是我们开辟这个锁工具,jucprofiler(MulticoreSDK的一部分)的念头。
2.jucprofiler概览
当在程序中利用JUC锁的时分,线程会鄙人面两种情形下“中断”实行:
当线程A试图往取得一个JUC锁,但这个锁却已被别的一个线程取得,那末线程A不能不“中断”,直到这个锁被开释大概超时。
当线程A挪用了java.util.concurrent.locks.Condition的恣意一个“守候”的API,线程A会中断实行,直到别的一个线程关照它大概超时。
我们分离把这两种情形称作“锁合作工夫”和“守候工夫”。
jucprofiler就是为了捕捉以上两种情形的工夫开支而计划和完成的。
2.1.代码修正(Instruments)
为了猎取JUC锁的运转时数据,必要提早修正一些JUC类,然后交换失落JRE中响应的类。在初次利用jucprofiler之前,用户必要运转命令往天生PreInstrument.jar。假定JRE没有改动的话,这个步骤只必要做一次。(假如用户改动了JRE,那末用户必要本人删除PreInstrument.jar,然后从头运转这个命令,来再次天生PreInstrument.jar)。

<br>
2.1.1.锁合作工夫开支
关于锁合作工夫开支,jucprofiler纪录了请求类java.util.concurrent.locks.AbstractQueuedSynchronizer和类java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject的实例,而且给这些实例分派独一的标识。
类办法挪用地位java.util.concurrent.locks.LockSupportpark(Object);类AbstractQueuedSynchronizer中的办法parkAndCheckInterrupt() parkNanos(Objectblocker,longnanos)类AbstractQueuedSynchronizer中的办法doAcquireNanos(intarg,longnanosTimeout)与doAcquireSharedNanos(intarg,longnanosTimeout)
2.1.2.锁守候工夫开支
关于锁守候工夫开支,jucprofiler猎取了在分歧的地位挪用类java.util.concurrent.locks.LockSupport的办法park(blocker)与parkNanos(blocker,nanos)的工夫开支:
类办法挪用地位java.util.concurrent.locks.LockSupportpark(Object);类AbstractQueuedSynchronizer除parkAndCheckInterrupt()之外的办法 parkNanos(Objectblocker,longnanos)类AbstractQueuedSynchronizer除doAcquireNanos(intarg,longnanosTimeout)与doAcquireSharedNanos(intarg,longnanosTimeout)之外的办法
<p>
JAVA学习必须明确这是一项投资,对于大多数的人来说,学习JAVA是为了就业,还有就是刚走向工作位置的朋友想尽快赶上工作的节奏。
admin 该用户已被删除
沙发
发表于 2015-1-21 07:46:28 | 只看该作者
吧,现在很流行的Structs就是它的一种实现方式,不过Structs用起来实在是很繁,我们只要学习其精髓即可,我们完全可以设计自己的MVC结构。然后你再研究一下软件Refactoring (重构)和极限XP编程,相信你又会上一个台阶。 做完这些,你不如整理一下你的Java代码,把那些经典的程序和常见的应用整理出来,再精心打造一番,提高其重用性和可扩展性。你再找几个志同道合的朋友成立一个工作室吧
再见西城 该用户已被删除
板凳
发表于 2015-1-28 05:18:43 | 只看该作者
Java是一种计算机编程语言,拥有跨平台、面向对java
乐观 该用户已被删除
地板
发表于 2015-2-1 10:21:37 | 只看该作者
至于JDBC,就不用我多说了,你如果用java编过存取数据库的程序,就应该很熟悉。还有,如果你要用Java编发送电子邮件的程序,你就得看看Javamail 了。
冷月葬花魂 该用户已被删除
5#
发表于 2015-2-3 12:20:42 | 只看该作者
《JAVA语言程序设计》或《JAVA从入门到精通》这两本书开始学,等你编程有感觉的时候也可以回看一下。《JAVA读书笔记》这本书,因为讲的代码很多,也很容易看懂,涉及到面也到位。是你学习技术巩固的好书,学完后就看看《JAVA编程思想》这本书,找找一个自己写的代码跟书上的代码有什么不一样。
柔情似水 该用户已被删除
6#
发表于 2015-2-5 21:54:53 | 只看该作者
接着就是EJB了,EJB就是Enterprise JavaBean, 看名字好象它是Javabean,可是它和Javabean还是有区别的。它是一个体系结构,你可以搭建更安全、更稳定的企业应用。它的大量代码已由中间件(也就是我们常听到的 Weblogic,Websphere这些J2EE服务器)完成了,所以我们要做的程序代码量很少,大部分工作都在设计和配置中间件上。
小女巫 该用户已被删除
7#
发表于 2015-2-13 17:19:40 | 只看该作者
你现在最缺的是实际的工作经验,而不是书本上那些凭空想出来的程序。
8#
发表于 2015-2-27 01:59:05 | 只看该作者
你可以去承接一些项目做了,一开始可能有些困难,可是你有技术积累,又考虑周全,接下项目来可以迅速作完,相信大家以后都会来找你的,所以Money就哗啦啦的。。。。。。
小妖女 该用户已被删除
9#
发表于 2015-3-2 06:43:10 | 只看该作者
是一种简化的C++语言 是一种安全的语言,具有阻绝计算机病毒传输的功能
金色的骷髅 该用户已被删除
10#
发表于 2015-3-4 20:50:14 | 只看该作者
那么我书也看了,程序也做了,别人问我的问题我都能解决了,是不是就成为高手了呢?当然没那么简单,这只是万里长征走完了第一步。不信?那你出去接一个项目,你知道怎么下手吗,你知道怎么设计吗,你知道怎么组织人员进行开发吗?你现在脑子里除了一些散乱的代码之外,可能再没有别的东西了吧!
小魔女 该用户已被删除
11#
发表于 2015-3-11 21:03:05 | 只看该作者
如果你学过HTML,那么事情要好办的多,如果没有,那你快去补一补HTML基础吧。其实JSP中的Java语法也不多,它更象一个脚本语言,有点象ASP。
活着的死人 该用户已被删除
12#
发表于 2015-3-13 00:27:26 | 只看该作者
科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。
兰色精灵 该用户已被删除
13#
发表于 2015-3-20 07:06:41 | 只看该作者
Pet Store.(宠物店)是SUN公司为了演示其J2EE编程规范而推出的开放源码的程序,应该很具有权威性,想学J2EE和EJB的朋友不要 错过了。
分手快乐 该用户已被删除
14#
发表于 2015-4-7 20:32:47 | 只看该作者
Java是一个纯的面向对象的程序设计语言,它继承了 C++语言面向对象技术的核心。Java舍弃了C ++语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-9-28 05:06

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表