仓酷云

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

[学习教程] 发布一篇主动检测并行Java程序中的毛病

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

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

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

x
再举这样一个例子:如果你想对一个数字取绝对值,你会怎么做呢?java的做法是intc=Math.abs(-166);而ruby的做法是:c=-166.abs。呵呵,这就看出了java与ruby的区别。
当CPU进进多核时期以后,并行编程将加倍盛行,可是编写并路程序更简单堕落。在开辟过程当中,工程师能注重到统一个程序在单线程运转时是准确的,但是在多线程时,它会有大概堕落。和并行相干的毛病的发生缘故原由一般都十分隐晦,并且在一次测试中,它们的呈现与否具有很强的随机性。因为程序中多个线程之间大概以恣意的体例交织实行,即便一个并路程序准确的运转了成百上千次,下一次运转仍旧大概呈现新的毛病。
Multi-ThreadRun-timeAnalysisTool是由IBM为多线程Java程序开辟的运转时剖析工具,它可用于剖析并查找Java代码中的一些不简单发明的潜伏并路程序毛病,好比数据合作(DataRace)和逝世锁(Deadlock),从而进步并行程序的代码质量。本文将先容检测Java程序中随机并行毛病的一种新工具(http://alphaworks.ibm.com/tech/mtrat),反省Java代码中的潜伏的并路程序毛病,从而进步代码的平安性和不乱性,并演示其关于潜伏而并未产生的毛病的开掘才能。
概述
Java编程言语为编写多线程使用程序供应壮大的言语撑持。可是,编写有效的、没有毛病的多线程程序仍旧对照坚苦。编程言语中线程面对良多应战。在这些应战中,最次要的就是编程庞大度的进步。这些编程庞大度是由同步共享变量的会见,潜伏的依附于时序的毛病和调试和优化并路程序的庞大性酿成的。
MTRAT只以是把分歧的手艺集成到了一个单一的开辟工具中,是为了掩饰工具外部的庞大性,并使得MTRAT便利利用。MTRAT次要由以下部分构成,
复杂的命令行界面和Eclipse插件。输入MTRAT反省到的并行毛病。
静态的Java字节码修正引擎。能够在Java类文件被Java假造机加载的时分,修正Java类。
程序运转时信息搜集器。搜集程序的静态信息,好比内存会见,线程同步,创立和停止。
高效的运转时剖析引擎。搜集到的运转时信息会被在线剖析,假如发明潜伏的并行毛病,将会经由过程界面呈报给用户。
检测数据合作
在并路程序中,当两个并行的线程,在没有任何束缚的情形下,会见一个共享变量大概共享对象的一个域,并且最少要有一个操纵是写操纵,就会产生数据合作毛病。MTRAT最壮大的功效就是发明并路程序中潜伏的数据合作毛病。鄙人边的Java程序就埋没了一个潜伏的数据合作毛病。
packagesample;
classValue
{
privateintx;

publicValue()
{
x=0;
}

publicsynchronizedvoidadd(Valuev)
{
x=x+v.get();
}

publicintget(){returnx;}
}
classTaskextendsThread
{
Valuev1,v2;

publicTask(Valuev1,Valuev2)
{
this.v1=v1;
this.v2=v2;
}

publicvoidrun(){v1.add(v2);}
}
publicclassDataRace
{
publicstaticvoidmain(String[]args)throwsInterruptedException
{
Valuev1=newValue();
Valuev2=newValue();
Threadt1=newTask(v1,v2);
Threadt2=newTask(v2,v1);
t1.start();
t2.start();
t1.join();
t2.join();
}
}
<p>
他们对jsp,servlet,javabean进行封装就是为了展示他们的某个思想,与java的开发并没有必然的关系,也不见得在所以情况下,别人使用起来会简单。
山那边是海 该用户已被删除
沙发
发表于 2015-1-18 17:22:01 | 只看该作者
是一种为 Internet发展的计算机语言
飘灵儿 该用户已被删除
板凳
发表于 2015-1-22 14:13:32 | 只看该作者
一直感觉JAVA很大,很杂,找不到学习方向,前两天在网上找到了这篇文章,感觉不错,给没有方向的我指了一个方向,先不管对不对,做下来再说。
乐观 该用户已被删除
地板
发表于 2015-1-25 16:30:33 | 只看该作者
是一种为 Internet发展的计算机语言
分手快乐 该用户已被删除
5#
发表于 2015-1-25 21:49:49 | 只看该作者
Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。
只想知道 该用户已被删除
6#
发表于 2015-2-4 04:52:27 | 只看该作者
所以现在应用最广泛又最好学的就是J2EE了。 J2EE又包括许多组件,如Jsp,Servlet,JavaBean,EJB,JDBC,JavaMail等。要学习起来可不是一两天的事。那么又该如何学习J2EE呢?当然Java语法得先看一看的,I/O包,Util包,Lang包你都熟悉了吗?然后再从JSP学起。
不帅 该用户已被删除
7#
发表于 2015-2-4 13:14:54 | 只看该作者
象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。
再见西城 该用户已被删除
8#
发表于 2015-2-6 08:11:10 | 只看该作者
是一种使用者不需花费很多时间学习的语言
柔情似水 该用户已被删除
9#
发表于 2015-2-9 01:01:29 | 只看该作者
当然你也可以参加一些开源项目,一方面可以提高自己,另一方面也是为中国软件事业做贡献嘛!开发者在互联网上用CVS合作开发,用QQ,MSN,E-mail讨论联系,天南海北的程序员分散在各地却同时开发同一个软件,是不是很有意思呢?
10#
发表于 2015-2-11 16:51:39 | 只看该作者
不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。
愤怒的大鸟 该用户已被删除
11#
发表于 2015-3-11 04:32:52 | 只看该作者
[url]http://www.jdon.com/[/url]去下载,或到同济技术论坛的服务器[url]ftp://nro.shtdu.edu.cn[/url]去下,安装上有什么问题,可以到论坛上去提问。
金色的骷髅 该用户已被删除
12#
发表于 2015-3-17 20:12:29 | 只看该作者
另外编写和运行Java程序需要JDK(包括JRE),在sun的官方网站上有下载,thinking in java第三版用的JDK版本是1.4,现在流行的版本1.5(sun称作J2SE 5.0,汗),不过听说Bruce的TIJ第四版国外已经出来了,是专门为J2SE 5.0而写的。
简单生活 该用户已被删除
13#
发表于 2015-3-25 00:19:39 | 只看该作者
一直感觉JAVA很大,很杂,找不到学习方向,前两天在网上找到了这篇文章,感觉不错,给没有方向的我指了一个方向,先不管对不对,做下来再说。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-9-28 19:22

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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