中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > 编程语言 > Java > 线程
关于J2EE中死锁问题的研究 三
作者:bea 时间:2006-08-01 20:20 出处:Michael 责编:LOKI
              摘要:暂无
经验法则

  下面的这些指导可以帮您避免死锁问题,或者至少在出现死锁时能诊断并修复它们。
  • 保持事务简短。
  • 了解数据库锁行为(以及事务分离层)。
  • 假定任何数据库访问都有可能陷入数据库死锁状况,但是能正确重试。
  • 事务完成前不要更新任何非事务状态(内存状态、缓存等)。
  • 确保在峰值并发时有足够大的资源池。
  • 尝试不在同一时刻获取多个资源。如果必需,则按相同的顺序每次获取一个资源。
  • 了解如何从应用服务器获取完整的线程转储以及从数据库获取数据库连接列表(包括互相阻塞的连接),知道每个数据库连接与哪个Java线程相关联。了解Java线程和数据库连接之间映射的最简单方法是向连接池访问模式添加日志记录功能。
  • 当进行嵌套的EJB调用时,了解哪些调用使用与调用方同样的数据库连接。即使嵌套的调用运行在同一个全局事务中,它仍将使用不同的数据库连接,而这会导致跨资源死锁。
  • 避免执行数据库调用和EJB调用,或在占有Java虚拟机锁时,执行其他与Java虚拟机无关的操作。如果有需要留心的特定Java虚拟机锁,就使用assert(!Thread.holdsLock(...)),从而避免以后的代码更改不会在无意间违背此规则。
  结束语

  J2EE应用程序中的跨资源死锁是一个大问题——它能导致整个应用程序慢慢终止,还很难被分离和修复,尤其是当开发人员不熟悉如何分析死锁环境的时候。我们讨论的情形将有助于您理解一些常见的死锁情形,并为您提供查找死锁的思路。更重要的是,我们概括的经验法则提供了一些要在代码中遵守的惯例,从而避免所有类似的死锁问题。
关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有