java - Java中的多线程导致表锁

标签 java multithreading oracle table-locking global-temp-tables

我正在使用batchUpdate 插入Oracle 表。五个不同的并行线程正在调用batchUpdate方法来插入到单个表中。 表是全局临时表类型。

程序执行未完成,建立数据库连接后卡住。

多个线程操作单个全局临时表会导致表锁并卡住程序的执行吗?

我可以使用以下查询查看锁定的表 -

 select object_name, object_type from all_objects where object_id in (select object_id from v$locked_object);

最佳答案

是的,他们会的。

如果两个不同的 session 同时更新同一个表,则在第一个表完成更新(执行 COMMIT)之前,第二个 session 将无法访问该表。 第一个 session 实际上在该表上部署“LOCK”,直到完成更新。

你不能真正通过两个线程同时更新完全相同的数据 block ,对吗?

这是ORACLE的一项功能,用于维护数据一致性。

关于java - Java中的多线程导致表锁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23775370/

相关文章:

java - 按名称排序 Object[][] Java

java - 如何将选择性数据从一个数据库复制到另一个数据库(ORACLE)

linux - 如何解决Oracle RemoteOperationException : Error reading error from command

c++ - 多态对象销毁和并发

multithreading - VBA 中的多线程

multithreading - ActiveX 控件是否需要线程同步?

java - Oracle 比较日期

java - java中的最终变量和同步块(synchronized block)

java - 无法弄清楚如何将结果输出到 JLabel 而不是 System.out.println

java - 在java中使用main方法为类创建对象时会发生什么