在线精品99_中国九九盗摄偷拍偷看_91免费版在线观看_91.app_91高清视频在线_99热最新网站

怎么写一组会出现死锁的ABAP程序

199次阅读
没有评论

共计 1518 个字符,预计需要花费 4 分钟才能阅读完成。

这篇文章主要介绍“怎么写一组会出现死锁的 ABAP 程序”,在日常操作中,相信很多人在怎么写一组会出现死锁的 ABAP 程序问题上存在疑惑,丸趣 TV 小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么写一组会出现死锁的 ABAP 程序”的疑惑有所帮助!接下来,请跟着丸趣 TV 小编一起来学习吧!

我们先看看如何用 Java 编写一个会出现死锁的程序。

不到 40 行代码就完成任务。为了便于 ABAP 从业人员理解,没有使用 Java 里的 Lambda 表达式,否则代码可以更短。

该程序逻辑如下:

线程 1 持有资源 1,试图持有资源 2;线程 2 持有资源 2,试图持有资源 1;死锁发生;

现在进入 ABAP 部分。

ABAP 帮助文档提到,使用 SELECT SINGLE FOR UPDATE 读取单条记录时,会自动在数据库层面为该条记录设置一把锁 (Exclusive lock,有的中文文档翻译成排他锁)。如果上锁操作会导致死锁发生,则会抛出异常。

于是我们首先创建一个 ABAP 数据库表,插入两条记录:

再开发两个 ABAP 程序 ZLOCK1 和 ZLOCK2,分别按照 Z01, Z02 和 Z02, Z01 的顺序使用 SELECT SINGLE FOR UPDATE 向数据库发起读取请求。

开启两个 SAPGUI 窗口,按照下面的步骤执行这两个程序,即可产生死锁。

(1) 以调试模式单步执行程序 ZLOCK1,成功执行完 SELECT SINGLE FOR UPDATE .. WHERE object_id = Z01 , 意味着此时程序 ZLOCK1 在数据库层面对 Z01 这条记录设置了一把锁。

(2) 切换到另一个 SAPGUI 窗口,执行程序 ZLOCK2, 单步调试执行完语句 SELECT SINGLE FOR UPDATE .. WHERE object_id = Z02,即此时程序 ZLOCK2 在数据库层面对 Z02 成功上锁。

(3) 再回到窗口 1,继续调试程序 ZLOCK1,此时调试器会阻塞,因为 ZLOCK1 试图对 Z02 上锁,而此时程序 ZLOCK2 持有记录 Z02 的锁。程序 ZLOCK1 处于阻塞状态,等待 ZLOCK2 释放对记录 Z02 设置的锁。

(3) 回到窗口 2,继续在调试模式下执行 ZLOCK2 程序第 12 行语句。此时程序 ZLOCK2 试图对记录 Z01 上锁,但该记录已经被程序 ZLOCK1 锁住了,程序 ZLOCK2 只好等待程序 ZLOCK1 释放对记录 Z01 的锁;而程序 ZLOCK1 永远也不可能释放对记录 Z01 上的锁,因为此刻它已经处于阻塞状态了,在等待程序 ZLOCK2 释放对记录 Z02 的锁。

此时 ABAP Kernel 检测到程序 ZLOCK2 发生了死锁,抛出一个运行时异常,结束了 ZLOCK2 的执行。程序 ZLOCK2 持有对记录 Z02 的锁也自动释放了。最后的结果是,程序 ZLOCK1 成功地对记录 Z02 上了锁。

在事务码 ST22 里,我们能观察到这次死锁的详情。

怎么写一组会出现死锁的 ABAP 程序

ABAP Kernel 这种检测到死锁发生后,立刻终止程序运行的方式,节省了应用开发人员通过阅读代码去分析死锁的时间。

回到 Jerry 之前的 Java 程序,运行之后两个线程陷入死锁,在控制台上没有打印任何可供排错的信息。然而 JDK 本身提供了方便的检查 Java 应用死锁状态的命令行工具:jstack.

怎么写一组会出现死锁的 ABAP 程序

命令行执行 jstack,传入 Java 程序的进程 id,如果该程序发生了死锁,该工具会打印出程序里具体是哪一行代码,在试图对何种资源进行上锁操作时出现的死锁,从而帮助开发人员迅速定位到逻辑上存在缺陷的代码位置。

怎么写一组会出现死锁的 ABAP 程序

到此,关于“怎么写一组会出现死锁的 ABAP 程序”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注丸趣 TV 网站,丸趣 TV 小编会继续努力为大家带来更多实用的文章!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-16发表,共计1518字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)
主站蜘蛛池模板: 99国产精品2018视频全部 | 护士被强女千到高潮视频 | 麻豆精品免费视频入口 | 亚洲久久网站 | 国产激情在线 | 成人牲交一极毛片 | 女性pisswctv | 美女视频久久 | 高清破外女出血av毛片 | 草草草在线观看 | 国产精品日韩欧美久久综合 | 精品国产一区二区三区香蕉 | 久久精品国产精品青草不卡 | 久久久精品人妻久久影视 | 成年性羞羞视频免费观看无限 | 亚洲久草 | 66lu国产在线观看 | 99久久精品免费精品国产 | 亚洲人成伊人成综合网久久 | 欧美日韩免费做爰视频 | 在教室伦流澡到高潮h麻豆 在教室伦流澡到高潮h强圩电影 | 亚洲国产欧美精品一区二区三区 | 日本久久久久一级毛片 | 亚洲丝袜在线观看 | 免费国产网站 | 91视频免费观看网站 | 国产精品1区2区3区 国产精品1区2区3区在线播放 | 色伊人亚洲综合网站 | 精品人无码一区二区三区 | 欧美桃色视频 | 国产精品18久久久久久小说 | 玩弄白嫩少妇xxxxx性 | 九九免费精品视频在这里 | 少妇aaa级久久久无码精品片 | 亚洲精品天堂 | 乱人伦人妻中文字幕无码久久网 | 亚洲男人的天堂av手机在线观看 | 色性综合 | 免费观看黄色一级视频 | 377人体粉嫩噜噜噜 37pao成人国产永久免费视频 | 亚洲国产精品久久久久久无码 |