只想知道 发表于 2015-1-18 11:15:56

JAVA编程:Java线程带来风险剖析仓酷云

为什么外国人还要写那些框架进行代码封装,他们不就是为了别人使用时可以更简单么!如果要达到一个企业级项目的不用框架是很难的。小一些的项目还行,大的光是MVC模式的设计的编码量就够大的了。还有性能方面,单轮windows,这个工具是微软写的,。上篇博客针对并发和线程举行了一些归纳综合性的解说,说到了我们必要使用线程举行并发编程,固然有必定难度,可是有很年夜的优点。那末这篇博客就针对难度来讲,说说线程带来了哪些风险,以致于招致举行并发编程难度加年夜。
在java平台中,线程是一部分十分主要的内容,java对线程供应了响应的言语和库,和一种跨平台的内存模子(关于内存模子保举看马兵士讲师先容的java内存模子),这类内存模子完成了开辟中编写一次到处运转的并发使用程序。使用java平台简化了并发程序的开辟,可是线程也带来了很多风险,对开辟职员手艺请求也进步了。
关于线程带来的风险应当从如许三点来看,平安性成绩、活泼性成绩和功能成绩。
平安性成绩实在就是线程平安性,这一点长短常庞大的,由于在没有同步的情形下,多个线程同时实行,实行按次是不成展望的,大概会呈现奇异的了局。上面举个例子来讲线程平安成绩,而且复杂剖析会呈现如何的了局。

[*]publicclassSequ
[*]{
[*]privateintvalue;
[*]publicintgetNext()
[*]{
[*]returnvalue++;
[*]}
[*]}
对照复杂的java程序,实质是实行一次失掉的value值加1,相似于渐渐天生器的如许一个类。那末假如是在多线程中如许的代码程序就会呈现多个线程取得的值是不异的。

从下面的实行流程可以看出多线程会见如许一个程序代码会呈现分歧线程失掉的值不异,这类平安性成绩成为竞态前提。呈现这类情形是因为多个线程共享不异的内存地点空间,而且是并发的,以是大概会呈现线程正在会见其他线程正在利用的变量,这类体例能够完成数据共享,可是带来了风险,由于线程没法意料数据而发生毛病。那末在java平台中实在有一个关头字来打消这类平安性成绩就是synchronized,这个前面我们详细再来会商。
关于平安性成绩实在就是多个线程同时会见和修正不异变量的时分,将本来串行的编程模子到场了非串行性,这类非串行性长短常难剖析的。要想多线程举动能够展望就必需对共享数据举行同步,固然能够用synchronized举行加锁操纵,如许就在线程之间打消了相互的搅扰,平安性成绩就是利用线程引进的,带来的风险也应当引发开辟职员的注重。
活泼性成绩,存眷的是某件准确事变终极会产生。当某个操纵没法持续实行下往的时分就会呈现活泼性成绩。活泼性成绩在串行和并行中城市呈现。
起首说串行中呈现这类活泼性成绩体现的情势之一就是我们罕见的逝世轮回,呈现逝世轮回以后轮回以后的代码就会没法失掉准确实行。
再说并发,因为线程的引进,会呈现A线程在守候线程B开释其持有的资本,而B线程永久都不开释该资本,那末A就永世的没法实行。
活泼性成绩也是线程引进举行并发编程必要注重的,关于怎样制止这些成绩前面会有深切的会商。
最初就是功能成绩,实在活泼性存眷的是某件准确的事变终极会产生,而功能成绩存眷的是准确的事变尽早产生。功能实在包含良多内容,比方服务器呼应工夫、吞吐量,资本损耗太高等。功能成绩也不单单是串行唯一的,在并发程序中也必要注重。
假如是优秀的并发使用计划,线程可以提拔功能。这必要对并发编程职员有很高的请求,由于不管怎样线程总会带来某种运转时的开支。

没有那个大公司会傻了吧唧用.net网页编程开发大型项目,开发了,那等于自己一半的生命线被微软握着呢。而.net网页编程不行,限制在window系统,又是捆绑,鄙视微软之!

小妖女 发表于 2015-1-19 17:42:25

Pet Store.(宠物店)是SUN公司为了演示其J2EE编程规范而推出的开放源码的程序,应该很具有权威性,想学J2EE和EJB的朋友不要 错过了。

金色的骷髅 发表于 2015-1-24 15:11:26

Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。

不帅 发表于 2015-1-25 21:18:50

当然你也可以参加一些开源项目,一方面可以提高自己,另一方面也是为中国软件事业做贡献嘛!开发者在互联网上用CVS合作开发,用QQ,MSN,E-mail讨论联系,天南海北的程序员分散在各地却同时开发同一个软件,是不是很有意思呢?

再见西城 发表于 2015-1-28 05:33:56

象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。

冷月葬花魂 发表于 2015-2-4 00:25:48

Java是一个纯的面向对象的程序设计语言,它继承了 C++语言面向对象技术的核心。Java舍弃了C ++语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading)

柔情似水 发表于 2015-2-6 00:07:38

那么我书也看了,程序也做了,别人问我的问题我都能解决了,是不是就成为高手了呢?当然没那么简单,这只是万里长征走完了第一步。不信?那你出去接一个项目,你知道怎么下手吗,你知道怎么设计吗,你知道怎么组织人员进行开发吗?你现在脑子里除了一些散乱的代码之外,可能再没有别的东西了吧!

深爱那片海 发表于 2015-2-8 14:32:20

如果你学过HTML,那么事情要好办的多,如果没有,那你快去补一补HTML基础吧。其实JSP中的Java语法也不多,它更象一个脚本语言,有点象ASP。

愤怒的大鸟 发表于 2015-2-8 16:25:55

Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。

灵魂腐蚀 发表于 2015-2-14 07:38:04

是一种将安全性(Security)列为第一优先考虑的语言

小魔女 发表于 2015-2-23 09:00:41

如果要向java web方向发展也要吧看看《Java web从入门到精通》学完再到《Struts2.0入门到精通》这样你差不多就把代码给学完了。有兴趣可以看一些设计模块和框架的包等等。

山那边是海 发表于 2015-3-2 21:51:42

自从Sun推出Java以来,就力图使之无所不包,所以Java发展到现在,按应用来分主要分为三大块:J2SE,J2ME和J2EE,这也就是Sun ONE(Open Net Environment)体系。J2SE就是Java2的标准版,主要用于桌面应用软件的编程;J2ME主要应用于嵌入是系统开发,如手机和PDA的编程;J2EE是Java2的企业版,主要用于分布式的网络程序的开发,如电子商务网站和ERP系统。

海妖 发表于 2015-3-7 09:08:21

如果要向java web方向发展也要吧看看《Java web从入门到精通》学完再到《Struts2.0入门到精通》这样你差不多就把代码给学完了。有兴趣可以看一些设计模块和框架的包等等。

老尸 发表于 2015-3-14 16:02:55

另外编写和运行Java程序需要JDK(包括JRE),在sun的官方网站上有下载,thinking in java第三版用的JDK版本是1.4,现在流行的版本1.5(sun称作J2SE 5.0,汗),不过听说Bruce的TIJ第四版国外已经出来了,是专门为J2SE 5.0而写的。

若相依 发表于 2015-3-21 11:50:04

Java 不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码。从而实现了“一次编译、到处执行”的跨平台特性。
页: [1]
查看完整版本: JAVA编程:Java线程带来风险剖析仓酷云