Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring:带有RowCallbackHandler的JdbcTemplate.query()是否对processRow()进行并发调用?_Java_Spring_Concurrency - Fatal编程技术网

Java Spring:带有RowCallbackHandler的JdbcTemplate.query()是否对processRow()进行并发调用?

Java Spring:带有RowCallbackHandler的JdbcTemplate.query()是否对processRow()进行并发调用?,java,spring,concurrency,Java,Spring,Concurrency,Spring将RowCallbackHandler参数记录为“一次提取一行结果的对象”。我看到每行调用一次processRow(),但是这些调用可以是并发的吗 我让我的RowCallbackHandler维护状态,包括构建处理对象的集合,偶尔提交该集合以供进一步处理。我需要知道此集合是否可以同时修改,或者我是否可以相信一次只发生一行processRow()。示例代码来自调用此接口的结果集提取器 while (rs.next()) { this.rch.processRow(rs); }

Spring将
RowCallbackHandler
参数记录为“一次提取一行结果的对象”。我看到每行调用一次
processRow()
,但是这些调用可以是并发的吗


我让我的
RowCallbackHandler
维护状态,包括构建处理对象的
集合
,偶尔提交该集合以供进一步处理。我需要知道此
集合是否可以同时修改,或者我是否可以相信一次只发生一行
processRow()。示例代码来自调用此接口的结果集提取器

while (rs.next()) {
   this.rch.processRow(rs);
}

如果我理解你的问题,一次一排。示例代码来自调用此接口的结果集提取器

while (rs.next()) {
   this.rch.processRow(rs);
}

这真的取决于你。如果您已经看过源代码,那么您提供的
RowCallbackHandler
将包装在
RowCallbackHandlerResultsTextRactor
适配器类中,然后再次包装在
QueryStatementCallback
(原文如此!)


没关系,要点是:如果将相同的
RowCallbackHandler
实例传递给两个并发的
query()
执行,Spring将在所有这些层中使用相同的对象。但是,如果您在每次执行
query()
时都创建
RowCallbackHandler
的新实例,那么您是安全的。

这完全取决于您自己。如果您已经看过源代码,那么您提供的
RowCallbackHandler
将包装在
RowCallbackHandlerResultsTextRactor
适配器类中,然后再次包装在
QueryStatementCallback
(原文如此!)

没关系,要点是:如果将相同的
RowCallbackHandler
实例传递给两个并发的
query()
执行,Spring将在所有这些层中使用相同的对象。但是,如果您在每次执行
query()
时都创建
RowCallbackHandler
的新实例,那么您就安全了