仓酷云
标题:
来看废除Java神话之三
[打印本页]
作者:
愤怒的大鸟
时间:
2015-1-18 11:29
标题:
来看废除Java神话之三
还是要自己一点一点写代码,然后编译,改错再编译好那。还有最重要的是.net网页编程的编译环境非常好,你甚是不需要了解太多工具,对于简单的系统,你可以之了解一些语法就哦了。
java华夏子操纵是线程平安的论调常常被提到。依据界说,原子操纵是不会被打断的操纵,因而被以为是线程平安的。实践上有一些原子操纵纷歧定是线程平安的。
这个成绩呈现的缘故原由是只管削减在代码中同步关头字。同步会伤害功能,固然这个丧失因JVM分歧而分歧。别的,在古代的JVM中,同步的功能正在慢慢进步。只管云云,利用同步仍旧是有功能价值的,而且程序员永久会全力进步他们的代码的效力,因而这个成绩就持续了上去。
在java中,32位大概更少位数的赋值是原子的。在一个32位的硬件平台上,除double和long型的别的原始范例一般都是利用32位举行暗示,而double和long一般利用64位暗示。别的,对象援用利用本机指针完成,一般也是32位的。对这些32位的范例的操纵是原子的。
这些原始范例一般利用32位大概64位暗示,这又引进了另外一个小小的神话:原始范例的巨细是由言语包管的。这是不合错误的。java言语包管的是原始范例的表数局限而非JVM中的存储巨细。因而,int型老是有不异的表数局限。在一个JVM上大概利用32位完成,而在另外一个JVM上多是64位的。在此再次夸大:在一切平台上被包管的是表数局限,32位和更小的值的操纵是原子的。
那末,原子操纵在甚么情形下不是线程平安的?次要的一点是他们大概的确是线程平安的,可是这没有被包管!java线程同意线程在本人的内存区保留变量的正本。同意线程利用当地的公有拷贝举行事情而非每次都利用主存的值是为了进步功能。思索上面的类:
classRealTimeClock
{
privateintclkID;
publicintclockID()
{
returnclkID;
}
publicvoidsetClockID(intid)
{
clkID=id;
}
//...
}
如今思索RealTimeClock的一个实例和两个线程同时挪用setClockID和clockID,并产生以下的事务序列:
T1挪用setClockID(5)
T1将5放进本人的公有事情内存
T2挪用setClockID(10)
T2将10放进本人的公有事情内存
T1挪用clockID,它前往5
5是从T1的公有事情内存前往的
对clockI的挪用应当前往10,由于这是被T2设置的,但是前往的是5,由于读写操纵是对公有事情内存的而非主存。赋值操纵固然是原子的,可是由于JVM同意这类举动,因而线程平安不是必定的,同时,JVM的这类举动也不是被包管的。
两个线程具有本人的公有拷贝而反面主存分歧。假如这类举动呈现,那末公有本机变量和主存分歧必需在以下两个前提下:
1、变量利用volatile声明
2、被会见的变量处于同步办法大概同步块中
假如变量被声明为volatile,在每次会见时城市和主存分歧。这个分歧性是由java言语包管的,而且是原子的,即便是64位的值。(注重良多JVM没有准确的完成volatile关头字。你能够在www.javasoft.com找到更多的信息。)别的,假如变量在同步办法大概同步块中被会见,当在办法大概块的出口处取得锁和办法大概块加入时开释锁是变量被同步。
利用任何一种办法都能够包管ClockID前往10,也就是准确的值。变量会见的频度分歧则你的选择的功能分歧。假如你更新良多变量,那末利用volatile大概比利用同步更慢。记着,假如变量被声明为volatile,那末在每次会见时城市和主存分歧。与此对比,利用同步时,变量只在取得锁和开释锁的时分和主存分歧。可是同步使得代码有较少的并发性。
假如你更新良多变量而且不想有每次会见都和主存举行同步的丧失大概你由于别的的缘故原由想扫除并发性时能够思索利用同步。
认真的记,感觉很紧张根本就没有时间和能力,来对技术知识点进行思考。这样课下就只能对知识进行简单的理解,其实简单的理解就是记忆课堂上讲的知识点,
作者:
再见西城
时间:
2015-1-21 08:25
你现在最缺的是实际的工作经验,而不是书本上那些凭空想出来的程序。
作者:
仓酷云
时间:
2015-1-22 16:47
是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言
作者:
小女巫
时间:
2015-1-22 23:20
你现在最缺的是实际的工作经验,而不是书本上那些凭空想出来的程序。
作者:
深爱那片海
时间:
2015-1-28 18:43
自从Sun推出Java以来,就力图使之无所不包,所以Java发展到现在,按应用来分主要分为三大块:J2SE,J2ME和J2EE,这也就是Sun ONE(Open Net Environment)体系。J2SE就是Java2的标准版,主要用于桌面应用软件的编程;J2ME主要应用于嵌入是系统开发,如手机和PDA的编程;J2EE是Java2的企业版,主要用于分布式的网络程序的开发,如电子商务网站和ERP系统。
作者:
不帅
时间:
2015-2-1 10:40
是一种语言,用以产生「小应用程序(Applet(s))
作者:
透明
时间:
2015-2-7 12:44
Java自面世后就非常流行,发展迅速,对C++语言形成了有力冲击。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台
作者:
活着的死人
时间:
2015-2-11 10:43
接着就是EJB了,EJB就是Enterprise JavaBean, 看名字好象它是Javabean,可是它和Javabean还是有区别的。它是一个体系结构,你可以搭建更安全、更稳定的企业应用。它的大量代码已由中间件(也就是我们常听到的 Weblogic,Websphere这些J2EE服务器)完成了,所以我们要做的程序代码量很少,大部分工作都在设计和配置中间件上。
作者:
因胸联盟
时间:
2015-2-16 20:27
Java 编程语言的风格十分接近C、C++语言。
作者:
精灵巫婆
时间:
2015-2-23 00:25
至于JDBC,就不用我多说了,你如果用java编过存取数据库的程序,就应该很熟悉。还有,如果你要用Java编发送电子邮件的程序,你就得看看Javamail 了。
作者:
海妖
时间:
2015-2-27 13:33
关于设计模式的资料,还是向大家推荐banq的网站 [url]http://www.jdon.com/[/url],他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。
作者:
变相怪杰
时间:
2015-3-4 20:39
Java是一个纯的面向对象的程序设计语言,它继承了 C++语言面向对象技术的核心。Java舍弃了C ++语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading)
作者:
冷月葬花魂
时间:
2015-3-10 22:12
Pet Store.(宠物店)是SUN公司为了演示其J2EE编程规范而推出的开放源码的程序,应该很具有权威性,想学J2EE和EJB的朋友不要 错过了。
作者:
蒙在股里
时间:
2015-3-17 11:09
当然你也可以参加一些开源项目,一方面可以提高自己,另一方面也是为中国软件事业做贡献嘛!开发者在互联网上用CVS合作开发,用QQ,MSN,E-mail讨论联系,天南海北的程序员分散在各地却同时开发同一个软件,是不是很有意思呢?
作者:
老尸
时间:
2015-3-24 08:29
Java是一种计算机编程语言,拥有跨平台、面向对java
欢迎光临 仓酷云 (http://ckuyun.com/)
Powered by Discuz! X3.2