Test1–程序实例2等待程序实例1释放资源测试2–死锁步骤1–在调试模式下执行zlock1步骤2–在调试模式下执行zlock2步骤3–ZLOCK1尝试锁定Z02步骤4–返回ZLOCK2,学习大数据,大数据 学习,执行第12行进一步阅读
这个博客的灵感来自今天的一次采访。我只想更新一下我在大学里学到的知识
我们可以在维基百科上得到死锁的概念
下面的图片给出了一个导致死锁的常见场景
那么我们如何编写一个导致死锁的ABAP程序呢?如果我们搜索ABAP帮助,我们可以知道SELECT SINGLE for UPDATE可能会产生死锁。
因此我的测试程序是基于SELECT for UPDATE编写的。
底层数据库表有以下两个条目:
我编写了以下简单程序:
作为程序实例1执行:
然后键入/nSE38,作为程序实例2再次执行此程序。此时程序实例2挂在第10行,等待程序实例1解除锁定。
切换回程序实例1,点击F8继续。然后程序实例2现在可以继续:
编写两个不同的程序:
step1–在调试模式下执行zlock1
step2–在调试模式下执行zlock2
step3–zlock1尝试锁定Z02
step4–返回zlock2,执行第12行
结果:zlock2中出现运行时错误,ZLOCK1现在成功地锁定了Z01和Z02:
ST22已经给出了详细的信息:
您可以在这个博客中通过标准JDK工具jstack找到如何编写Java程序来生成死锁以及如何在Java程序中检测死锁。
,如何学习大数据,trustdata大数据,怎样做淘客