如何同步 PL/SQL 调用的 java 方法

2023-12-12

我只是有一个与并发相关的问题,其逻辑流程是当客户端(称为Oracle Forms)提交请求(称为并发程序)并调用plsql过程时,该过程最终将调用java静态方法。

我发现,当我同时或在很短的时间间隔(例如1秒)内提交两个请求时,会注意到一些并发问题。

java 方法是执行从数据库搜索建议应将哪些记录插入数据库的操作的起点。

问题是,它们会导致重复的结果,因为当我查询时,两个请求都发现插入新记录很好。

我尝试添加synchronized在静态java方法中,但这并不能解决这个问题,为什么?

我所做的是:

public static synchronized void execute

请注意,插入将在plsql中调用,这意味着如果仅同步java方法,我做的同步是不够的。但是当我查看日志时,它显示两个请求在同一秒内运行,我认为这是不正常的!因为查询数据库并执行建议非常耗时。

为了使java方法真正耗时,我添加了代码调用Thread.sleep(5000),并记录此代码之后的时间并记录线程 ID。

惊讶地发现Threadid是1!而且,他们睡觉的时间也是在同一时间。这是为什么?

我可以做什么来解决这个问题? java方法或pl sql上有锁吗?

PS:我现在正在尝试使用DMBS_LOCK,这似乎有效,但我仍然希望知道 java 方法不同步的原因。


我不知道 Oracle DB 内的 JVM 是如何实现的,但因为(至少在某些常见配置中)每个数据库连接都有自己的服务器process,那么如果每个都嵌入了一个单独的 JVM,那么同步块不会给你带来多大好处。您需要使用数据库锁。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何同步 PL/SQL 调用的 java 方法 的相关文章

  • 从插件设置 Maven 属性

    我在这里阅读了一些关于如何从 Maven 插件设置属性的问题 其中大多数讨论了应用程序的版本号 似乎没有简单的方法可以做到这一点 我发现的最佳解决方案是拥有一个从插件更新的 filter properties 文件 并由主 pom 文件使用
  • 如何为Spring Boot中的所有控制器指定前缀?

    我有控制器映射到 user and order RestController RequestMapping users public class UserController RestController RequestMapping or
  • 确定列表编号是否连续

    我在 Java 工作 我有一个无序列表 包含 5 个数字 范围从 0 100 没有重复 我想检测其中 3 个数字是否连续且没有间隙 例子 9 12 13 11 10 true 17 1 2 3 5 true 19 22 23 27 55 f
  • Junit测试中LocalDateTime反序列化的问题

    我有问题LocalDateTime反序列化Junit测试 我有简单的REST API返回一些DTO目的 当我呼叫端点时 响应没有问题 它是正确的 然后我尝试编写单元测试 得到MvcResult并使用ObjectMapper将其转换为我的DT
  • 将 Java 3D 坐标转换为 2D 屏幕坐标

    我正在使用一个名为 Walrus 的 Java 3D 应用程序 该应用程序用于显示有向图 该代码已经具有突出显示节点并在给定其屏幕坐标的情况下在图形中相邻绘制标签的功能 旋转屏幕后 该节点不再突出显示 我所拥有的是 3D 中的节点坐标 我需
  • 在类路径中使用通配符调用 java 失败

    我当前目录中有一些 jar 它们都需要位于类路径中 因此我想对类路径使用通配符约定 命令行是 java exe classpath org python util jython args 但是我收到这个错误 Exception in thr
  • 膨胀类 android.support.v7.internal.widget.NativeActionModeAwareLayout 时出错

    如果您以前解决过这个问题 请有人帮助我 我正在尝试使用材料设计制作一些东西 以便应用程序可以运行到 API 10 的低版本 我的代码中没有任何错误 但我不断收到此错误 Android 日志猫 06 01 05 05 37 414 E And
  • 在仅具有两种类型值的列上创建索引有多有效

    我在列上创建了一个索引 该列只有两个可能的值 Y 和 N 两个值的数据类型相同 假设列名称是指示符 我写了一个选择语句 例如 SELECT INDICATOR FROM TEMP TABLE ORDER BY INDICATOR 当我在 S
  • 无法在android中使用retrofit发出@Post请求

    我正在学习如何在 android 中使用改造 但是每当我尝试从互联网检索数据时 我的应用程序不会返回任何内容我的响应没有成功 我不知道如何修复当前我正在尝试发布的错误并使用此 URL 检索数据https jsonplaceholder ty
  • 字节流和字符流

    请解释一下什么是字节流和字符流 这些究竟意味着什么 Microsoft Word 文档是面向字节的还是面向字符的 Thanks 流是一种顺序访问文件的方式 字节流逐字节访问文件 字节流适用于任何类型的文件 但不太适合文本文件 例如 如果文件
  • 码头无故停止

    我需要经验丰富的码头用户的建议 我在负载均衡器 亚马逊云 后面维护着 2 台 Linux 机器 使用 Jetty 9 0 3 有时我的 Jetty 容器会被 Thread 2 无故关闭 同时地 显示以下日志并且容器无故停止 没有错误 没有例
  • 使用 JPA 存储库保留 Spring Batch ItemWriter 的问题

    我对春季批次有疑问ItemWriter它依赖于 JPA 存储库来更新数据 这里是 Component public class MessagesDigestMailerItemWriter implements ItemWriter
  • JList 类型不采用参数类型

    当我尝试编译一些代码时 我不断收到这些错误 CCC java 21 type javax swing JList does not take parameters JList
  • 有没有办法防止 Spring Boot 覆盖 bean?

    与春天的抽象可刷新应用程序上下文 http docs spring io spring docs current javadoc api org springframework context support AbstractRefresh
  • 使用 Spark SQL 时找不到 Spark Logging 类

    我正在尝试用 Java 进行简单的 Spark SQL 编程 在程序中 我从 Cassandra 表获取数据 将RDD into a Dataset并显示数据 当我运行spark submit命令 我收到错误 java lang Class
  • 未找到 GroovyEvaluator

    我会尝试在以下位置制作我的 PIE 3D 报告iReport 在我的 struts xml 中 我用这个来调用我的报告
  • 如何使用JSqlParser向sql添加where条件?

    我想用JSqlParser向sql添加where条件 例如 Before select from test table where a 1 group by c After select from test table where a 1
  • Android中计算两个时间之间的差异

    我有两个字符串变量 例如 StartTime 和 EndTime 我需要通过用 StartTime 减去 EndTime 来计算 TotalTime StartTime和EndTime的格式如下 StartTime 08 00 AM End
  • 正确的单元测试技术

    在使用 TDD 时 我发现自己需要测试一个包含查找值的常量 最终 哈希图 请查看更新中出现这种情况的原因 见下文 private static final Map
  • E/libEGL: validate_display:99 错误 3008 (EGL_BAD_DISPLAY) API 24 或更高版本

    当我使用 API 为 24 或更高版本的设备时 我收到此错误 E libEGL validate display 99 错误 3008 EGL BAD DISPLAY XML 代码 activity main xml

随机推荐

  • 如何确保仅当单击按钮时它才重定向到特定网址 javascript

    所以我以某种方式构建了它将总计从结账页面转移到索引页面 在本例中是付款页面 但这是一个问题 当进入结帐页面时它会自动转到索引页面 但我希望它仅在按钮打开时才这样做单击 我尝试使用 addEventListener 执行某些操作 但它只是在i
  • 粘性表格标题

    我正在用这个plugin在我的中实现粘性表头Table 实际上 就像在插件示例和我的页面中一样 表头在表中的最后一行稍后消失 我希望我的表头在最后一行消失时消失 有机会实现这一点吗 这是一个工作示例 fiddle 我所改变的只是这一行的结尾
  • 简单赋值时不输出期望值

    当我将一些值分配给具有四位的变量时 当我简单地输出该值时 我会得到意想不到的结果 我以前从未见过这个 想知道我是否在语法上做错了什么 module main reg 3 0 x initial begin monitor b x x 001
  • Boot2Docker(在 Windows 上)使用共享文件夹运行 Mongo(不支持此文件系统)

    我正在尝试使用 Boot2Docker 在 Windows 上使用共享文件夹启动 Mongo 容器 开始使用时run it v c Users 310145787 Desktop mongo data db mongo我在容器内收到一条警告
  • 谷歌数据流写入bigquery表性能

    我将处理数据和输出的性能与 Bigquery 表和文件进行了比较 差异显着 输入 约 600 个文件中的 150 万条记录 转换 构造 转换每个记录中的一些字段 构造一个键并发出键 值对 最终每个键的记录都会到达一个目标 一个文件或一张表
  • 将元素从一个 div 内部拖动到另一个 div 中

    我希望能够将一个元素从一个 div 内部拖动到另一个 div 中 jQuery用户界面可拖动的 and 可丢弃的 但他们似乎只是在视觉上操纵元素 使用position relative而不通过 DOM 移动它们 如果可以的话 我似乎找不到例
  • 如何在 .NET 中获取绝对或标准化文件路径?

    如何以最小的努力 如果可能的话 使用一些现有的设施 转换路径 例如c aaa bbb ccc to c aaa ccc 我会这样写 public static string NormalizePath string path return
  • 与自我绑定的窗口?

    我试图将窗口的数据上下文设置为自身 但我无法弄清楚语法应该是什么
  • 向 SpringBootTest 添加配置类会破坏组件扫描

    我正在尝试禁用真正的 Mongo 连接并在测试中将其替换为 Fongo 模拟 这是我的测试课 SpringBootTest RunWith SpringRunner class public class ControllerTest Aut
  • 在提交表单之前将复选框值合并到字符串中

    我正在将表单发送到我访问权限有限的外部服务器 我有一个表单 其中包含用户感兴趣的不同产品的许多复选框 我需要以单个字符串形式发送这些复选框 其中列出了他们检查的所有产品 我知道我需要使用 JavaScript 来捕获选择并将它们组合成一个变
  • Realitykit 功能在 ios 13.4.1 上崩溃,但在 15.2 上运行

    我有一个部署目标为 10 的项目 其 Realitykit 功能仅出现在 ios 13 设备上 问题是它在 ios 15 2 的真实设备中成功运行 但在 ios 13 4 1 中崩溃并出现错误 实例化缺少弱链接祖先的类的类元数据 avail
  • jOOQ“EXTRACT(EPOCH FROM [field])”解决方法?

    有一种语法允许将时间戳转换为各种日期部分 包括 unix 纪元 其工作原理如下 至少在最新的 PostgreSQL 中 SELECT EXTRACT EPOCH FROM ts FROM 然而 jOOQ 似乎不支持这种语法 如下所示这次讨论
  • hunchentoot 使用 ssl 定义-easy-handler?

    我一直使用define easy handler 我现在有一个新创建的 ssl 证书和关联的 pem 文件 但无法弄清楚 d e h 的 ssl 等效项是什么 例如 我有 hunchentoot define easy handler lo
  • C 中的免费二维数组

    当我遇到以下示例时 我正在解决一些简单的指针练习 void deallocate2D int array int nrows deallocate each row int i for i 0 i lt nrows i free array
  • 与可为空值的 SQL 相等/不相等比较

    首先采取 拼凑解决方案 哨兵方法 您的程序必须不允许输入哨兵值 select coalesce a 2147483648 coalesce b 2147483648 as is equal a little postgresism 假设您忘
  • 随机生成弯曲/波浪路径

    我有一张比视口大得多并且位于视口中心的巨大地图图像 用户可以通过拖动屏幕来浏览该图像 为了创造视差效果 我在前景中使用了巨大的云图像 当用户通过拖动探索地图时 背景和前景都会以视差方式移动 到目前为止 一切都很好 然而 我真正想做的是给云的
  • PHP递归删除函数

    我编写了用于文件夹删除的递归 PHP 函数 我想知道如何修改此函数以删除虚拟主机中的所有文件和文件夹 不包括给定的文件和文件夹名称数组 例如 cgi bin htaccess BTW 使用此函数完全删除像这样的目录调用 recursive
  • 如何在没有 Outlook 的情况下通过 VBA 发送电子邮件

    我尝试在 VBA 中通过 SMTP 发送电子邮件 但返回错误 Dim CDOmsg As CDO Message Set CDOmsg New CDO Message With CDOmsg Configuration Fields Ite
  • 我可以在“with”之外运行剧作家吗?

    我怎样才能跑 browser sync playwright chromium launch 根据文档 playwrite 必须与 with 一起运行 with sync playwrith as p 是什么导致我的浏览器在 with 结束
  • 如何同步 PL/SQL 调用的 java 方法

    我只是有一个与并发相关的问题 其逻辑流程是当客户端 称为Oracle Forms 提交请求 称为并发程序 并调用plsql过程时 该过程最终将调用java静态方法 我发现 当我同时或在很短的时间间隔 例如1秒 内提交两个请求时 会注意到一些