谁能帮忙修改一下程序,我想用到毕业论文抄袭率检测中?!

热门日志推荐
人人最热标签
分享这篇日志的人常去
北京千橡网景科技发展有限公司:
文网文[号··京公网安备号·甲测资字
文化部监督电子邮箱:wlwh@··
文明办网文明上网举报电话: 举报邮箱:&&&&&&&&&&&&
请输入手机号,完成注册
请输入验证码
密码必须由6-20个字符组成
下载人人客户端
品评校花校草,体验校园广场&&&&分享知识、分享快乐
 大家不用关心程序实际逻辑是否正确,只是好奇,为什么这个程序会hang住不运行了?而且CPU会占用100%
import java.util.HashM
public class TestLock {
private HashMap map = new HashMap();
public TestLock() {
Thread t1 = new Thread() {
public void run() {
for(int i=0; i&50000; i++) {
map.put(new Integer(i), i);
System.out.println("t1 over");
Thread t2 = new Thread() {
public void run() {
for(int i=0; i&50000; i++) {
map.put(new Integer(i), i);
System.out.println("t2 over");
t1.start();
t2.start();
public static void main(String[] args) {    
new TestLock();
Dump thread会看到,程序hang到:
"Thread-1" prio=6 tid=0x00c70bd8 nid=0x914 runnable [0x02ebf000..0x02ebfc68]
at java.util.HashMap.put(HashMap.java:420)
at TestLock$2.run(TestLock.java:20)
"Thread-0" prio=6 tid=0x00c70a50 nid=0x578 runnable [0x02e7f000..0x02e7fb68]
at java.util.HashMap.put(HashMap.java:420)
at TestLock$1.run(TestLock.java:11)
HashMap 不是线程安全的;请换成Hashtable。
我在本地运行了一下 没发现死锁.你可以用visualvm 检测一下, 它可以发现是否死锁, 已经死锁的行数等信息
&Thread-1& prio=6 tid=0x00c70bd8 nid=0x914 runnable 两个线程都是runnable状态.这程序,理论上,不应该出现死锁的.
不会发生死锁。不是线程安全的hashmap,貌似你也没有用到锁的概念。只是到最后map里面的数据大于50000.
@nobody
这个知道,现在是想搞明白程序为什么会hang在那不走了
@Scud(飞云小侠)
应该是与机器有关,我公司机器,使用300个循环就会hang,你可以试着把循环调大一点试试看。
突然记起来了.请参考这篇文章:在自己电脑上,一直无法重现这个问题(无论加大循环,或者增加线程数),明天回公司再去看看.
@stone2083
非常感谢提供的链接。
对,可能是多个线程同时修改HashMap,导致,HashMap内部死循环了。不过奇怪,不管怎么dump thread,都是hang在HashMap.java:420,而查看HashMap的代码,怎么也想不通这个地方会hang住。
线程还在运行,而main函数已经退了,
你在put方法420行的循环中 加一句
System.out.println(e+&
&+e.next);
就会产生一个死循环,即e=e.next.next。
应该是多线程下,进行hash处理的时候出现的。
@猪儿笨笨
e.next访问的是e的一个属性,怎么会相当于e.next.next?
我改成了concurrenthashmap还是会出现,只是出现的频率降低了不少,大家可以陆续开上千个进程试一下start javaw TestLockstart javaw TestLockstart javaw TestLockstart javaw TestLockstart javaw TestLockstart javaw TestLockstart javaw TestLockstart javaw TestLockstart javaw TestLockstart javaw TestLockstart javaw TestLockstart javaw TestLockstart javaw TestLockstart javaw TestLockstart javaw TestLockstart javaw TestLockstart javaw TestLockstart javaw TestLock...........etc
@bigwesthorse只有hashtable可以顺利地通过1429个进程测试,哈哈,似乎看到了一点让人惊喜的东西
死循环的代码在hashmap的transfer方法:void transfer(final Entry[] newTable) {
final Entry[] src =
final int newCapacity = newTable.
final long time1 = System.currentTimeMillis();
for (int j = 0; j & src. j++) {
Entry&K,V& e = src[j];
if (e != null) {
final Entry&K,V& next = e.
final int i = indexFor(e.hash, newCapacity);
e.next = newTable[i];
newTable[i] =
} while (e != null);
}我的分析是:死循环就在while中,对同一个旧table中的e,一个线程执行了 e.next = newTable[i];(还没到 e =),另一个才到 final Entry&K,V& next = e.,结果后到的线程接着执行e =造成e=e.next,死循环了。
楼上的
不是e=e.next
而是e=e.next.next
不过你的分析应该是对的,就是在根据hashcode计算位置的时候,因为并发的原因出现问题了。
@天快黑了
这个很正常的,因为e.next相当于一个链表指针,指向下一个点,它们是同一个例的实类。
另外,关于HashMap的实现,已经说了是线程不安全的,多线程下,出现问题是正常的。
Hashtable一直线程安全,可以放心用。
但说concurrenthashmap不对,这个应该不会。
回头也试一下再来讨论。
用了concurrenthashmap,循环5000次,没有出现问题。
public TestLock() {
for (int i = 0; i & 5000; i++) {
final int count=i;
Thread t1 = new Thread() {
public void run() {
for (int i = 0; i & 50000; i++) {
map.put(new Integer(i), i);
System.out.println(count+& over&);
t1.start();
@猪儿笨笨对于concurrenthashmap用一个批处理写1000多个start javaw TestLock肯定会出现的,我说了概率很低,基本上两三百个程序会有个卡死你就等着那个批处理狂跑就行了,1到2分钟之后,你就会感到cpu100%了被某个进程霸占了,一直hang在那里
没有明白楼上说什么意思?
这样说吧,是否在一个JVM内,还是说同时启动多个JVM?
如果多个JVM,就很难说有什么问题,比如说用光了资源,等等。
@猪儿笨笨就是这个程序是否出现死锁要看rp的,跑个200多次才会出现一次我用批处理连续跑了上千次,出现了好几次死锁的情况
感谢大家的回复,这个问题确实很难解释清楚。我们只能注意,多线程下千万不要使用非线程安全的对象。
@猪儿笨笨
ConcurrentHashMap只是保证Happens-before关系,勉强的线程安全,如果需要保证数据一致性,还是用Collections.synchronizedMap(Map map)方法,利用的synchronized机制,规划好代码流程来实现线程安全毕业论文-关于某合同段施工、工作程序、工作要求及实际施工情况的调研报告_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
评价文档:
喜欢此文档的还喜欢
毕业论文-关于某合同段施工、工作程序、工作要求及实际施工情况的调研报告
阅读已结束,如果下载本文需要使用
想免费下载本文?
把文档贴到Blog、BBS或个人站等:
普通尺寸(450*500pix)
较大尺寸(630*500pix)
你可能喜欢您还未登陆,请登录后操作!
各位高手,帮忙修改一下论文,按论文里面的要求修改,谢谢了!帮忙改完的,可以重重感谢!!3
信息的有力工具。扩展标记语言XML是一种简单的数据存储语言,使用一系列简单的标记描述数据,而这些标记可以用方便的方式建立,虽然XML占用的空间比二进制数据要占用更多的空间,但XML极其简单易于掌握和使用[14]。 改改,怎么看起来这么别扭,用自己的话写
XML与Access,Oracle和SQL Server等数据库不同,数据库提供了更强有力的数据存储和分析能力,例如:数据索引、排序、查找、相关一致性等,XML仅仅是展示数据[15]。事实上XML与其他数据表现形式最大的不同是:他极其简单。这是一个看上去有点琐细的优点,但正是这点使XML与众不同。XML与HTML的设计区别是:XML是用来存储数据的,重在数据本身。而HTML是用来定义数据的,重在数据的显示模式。XML的简单使其易于在任何应用程序中读写数据,这使XML很快成为数据交换的唯一公共语言,虽然不同的应用软件也支持其它的数据交换格式,但不久之后他们都将支持XML,那就意味着程序可以更容易的与Windows、Mac OS, Linux以及其他平台下产生的信息结合,然后可以很容易加载XML数据到程序中并分析他,并以XML格式输出结果。为了使得SGML显得用户友好,XML重新定义了SGML的一些内部值和参数,去掉了大量的很少用到的功能,这些繁杂的功能使得SGML在设计网站时显得复杂化。XML保留了SGML的结构化功能,这样就使得网站设计者可以定义自己的文档类型,XML同时也推出一种新型文档类型,使得开发者也可以不必定义文档类型。因为XML是W3C制定的,XML的标准化工作由W3C的XML工作组负责,该小组成员由来自各个地方和行业的专家组成,他们通过email交流对XML标准的意见,并提出自己的看法 (
是个公共格式, (它不专属于任何一家公司),你不必担心XML技术会成为少数公司的盈利工具,XML不是一个依附于特定浏览器的语言[16]。
2.5
抄的痕迹太明显,语言描述修改一下,简单精炼,尽量用自己的话写,
ASP 是一项微软公司的技术,是一种使嵌入网页中的脚本可由因特网服务器执行的服务器端脚本技术。指 Active Server Pages(动态服务器页面) ,运行于 IIS 之中的程序。 IIS 指 Internet Information Services(因特网信息服务)。IIS 是 Windows 2000 捆绑的免费组件,IIS同时也是 Windows NT 4.0 的可选组件   此可选组件可通过因特网下载。PWS 的体积更小, 不过拥有 IIS 的完整功能   PWS 可在 Windows 95/98 的安装 CD 中找到。 不仅仅是 Active Server Page (ASP) 的下一个版本,而且是一种建立在通用语言上的程序构架,能被用于一台Web服务器来建立强大的Web应用程序。 提供许多比现在的Web开发模式强大的优势[17]。
   是把基于通用语言的程序在服务器IIS上运行。不像以前的ASP即时解释程序,而是将程序在服务器端首次运行时进行编译,这样的执行效果,当然比一条一条的解释强很多。但是 也有一个特点,就是每修改一次程序(即代码类)必须重新编译一次,修改几次就必须重新编译几次,执行效果也会有所降低。
   构架是可以用Microsoft(R)公司最新的产品 Visual
开发环境进行开发,WYSIWYG(What You See Is What You Get所见即为所得)的编辑。这些仅是 强大化软件支持的一小部分[18]。
  因为 是基于通用语言的编译运行的程序,所以它的强大性和适应性,可以使它运行在Web应用软件开发者的几乎全部的平台上。通用语言的基本库,消息机制,数据接口的处理都能无缝的整合到 的Web应用中。 同时也是language-independent语言独立化的,所以,你可以选择一种最适合你的语言来编写你的程序,或者把你的程序用很多种语言来写,现在已经支持的有C#(C++和Java的结合体),VB,Jscript。将来,这样的多种程序语言协同工作的能力保护您现在的基于COM+开发的程序,能够完整的移植向 [19]。   ASP.NET一般分为两种开发语言,VB.NET和C#,C#相对比较常用。
   使运行一些很平常的任务如表单的提交客户端的身份验证、分布系统和网站配置变得非常简单。例如 页面构架允许你建立你自己的用户分界面,使其不同于常见的VB-Like界面[20]。
描述修改一下,简单精炼,尽量用自己的话写,
你们老师还蛮有耐心的,说实话,要我是指导老师,直接把文章丢给你了~
您的举报已经提交成功,我们将尽快处理,谢谢!
大家还关注问题补充&&
恩,现成的你做参考.
QQ称&13:05
有文本和图片
Q_是&4-16 21:07
猜你感兴趣
服务声明: 信息来源于互联网,不保证内容的可靠性、真实性及准确性,仅供参考,版权归原作者所有!Copyright &
Powered by

我要回帖

更多关于 毕业论文范文 的文章

 

随机推荐