启天论坛软件硬件技术Java技术 → 自动检测并行 Java 程序中的错误


  共有329人关注过本帖平板打印

主题:自动检测并行 Java 程序中的错误

帅哥,在线噢!
junsan
  1楼 个性首页 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 总掌门
等级:管理员 帖子:11764 积分:7955 威望:757 精华:24 注册:2005-7-14 15:13:00
  发帖心情 Post By:2008-11-3 14:35:00



在 MTRAT 的死锁检查报告中我们可以发现,线程 Thread 7 已经获得了锁 lock1,在程序 109 行试图获得锁 lock2。然而,线程 Thread 8 已经获得了锁 lock2,在程序 109 行试图获得锁lock1。

根据 MTRAT 的死锁检查报告,程序员可以很容易得知道,这个死锁问题是由于两个线程按照相反的顺序上锁造成的。避免这种问题的一种方法是让代码按固定的全局顺序获取锁。那么如果两个线程按照一致的顺序去上锁,死锁错误就可以被消除了。

void harness2() throws InterruptedException
{
        StringBuffer L1 = new StringBuffer("L1");
        StringBuffer L2 = new StringBuffer("L2");

        Thread t1 = new T3(L1, L2);
        Thread t2 = new T3(L1, L2);

        t1.start();
        t2.start();

        t1.join();
        t2.join();
}

结束语

在本文中,我们展示了如何检查并行 Java 程序中潜在的错误,比如数据竞争和死锁。通过使用 MTRAT,您可以在程序开发阶段发现用肉眼难以发现的并行程序错误。该工具使开发正确和高质量的并行程序变得更加容易。

links: http://www.ibm.com/developerworks/cn/java/j-lo-mtrat/


主页:http://www.rsky.com.cn

培训论坛:http://www.javastar.org

Blog:http://blog.csdn.net/junnef

技术交流QQ:334620162

培训咨询QQ:66883074

合租咨询QQ:631066985

MSN:junsanjin@hotmail.com

Emial:junsanjin@263.net

传真:(010)950507转747393
启天合组-专业合租空间提供商 支持(0中立(0反对(0回到顶部