草庐IT

callable-statement

全部标签

java - Callable 是如何工作的?可调用对象如何返回值?

我试图了解Callable在不同线程上运行时如何能够返回值。我正在查看类Executors、AbstractExecutorService、ThreadPoolExecutor和FutureTask,所有这些都在java.util.concurrent包。您可以通过调用Executors中的方法(例如newSingleThreadExecutor())来创建ExecutorService对象。然后,您可以使用ExecutorService.submit(Callablec)传递一个Callable对象。由于call()方法是由ExecutorService提供的线程运行的,返回的对象从

java - 什么时候使用 Callable 对象在 Java Executor 中调用 call() 方法?

这是来自example的一些示例代码.我需要知道的是call()何时在可调用对象上被调用?是什么触发了它?publicclassCallableExample{publicstaticclassWordLengthCallableimplementsCallable{privateStringword;publicWordLengthCallable(Stringword){this.word=word;}publicIntegercall(){returnInteger.valueOf(word.length());}}publicstaticvoidmain(Stringargs[

java - 哪个更快? Statement 或 PreparedStatement

在网络中经常可以找到这样的代码:privatestaticfinalStringSQL="SELECT*FROMtable_name";....为此SQL查询使用了PreparedStatement。为什么?据我所知,PreparedStatement花时间预编译SQL语句。事实证明,Statement比PreparedStatement更快。还是我记错了? 最佳答案 当您必须使用不同的数据多次运行相同的语句时,准备好的语句要快得多。那是因为SQL只会验证查询一次,而如果您只使用一条语句,它将每次都验证查询。使用PreparedSt

java - org.h2.jdbc.JdbcSQL异常 : Schema "MYAPP" not found; SQL statement

我正在尝试将H2数据库与sprintjunit测试一起使用,如下所示:1-SpringTestingConfig:@Configuration@ComponentScan(basePackages="com.myapp.data",excludeFilters={@Filter(Configuration.class)})@PropertySource("classpath:/test.properties")@Profile("test")publicclassSpringTestingConfig{@BeanpublicDataSourcedataSource(){DriverMa

java - 在 Java 中,这是否被视为 "nested IF statement"的示例?

在这里,我们有一个长期存在的假设需要在我的脑海中清除。以下是嵌套“if”语句的示例:if(...)...;elseif(...)...;我的印象是嵌套需要在另一个“if”中使用“if”,如下所示:if(...)if(...)...;或者当你嵌套在else中时,至少要清楚地分离范围,如下所示:if(...)...;else{//ifthenextstatementdidn't//exist,thenthecurlybracechangesnothing?...;if(...)...;}这可能归结为编译器如何解释事物,else-ifs中的“if”是否被视为与父if处于同一级别,或者它们是否

java - 与 Statement 相比,使用 PreparedStatement 有什么缺点吗

我正在研究JDBC中Statement和PreparedStatement之间的差异,并看到了很多优点here和herePreparedStatement与Statement的比较。我的一些同事问为什么我们仍然需要Statement,为什么不反对使用PreparedStatement的优点。那么还有什么理由让我们在JDBCAPI中仍然保留Statement吗? 最佳答案 PreparedStatement用于处理动态SQL查询,其中Statement用于处理静态SQL查询。 关于java

Java - 在 ExecutorCompletionService 中为 Callable 定义超时

我在使用ExecutorCompletionService时遇到了以下问题.我想在不同的线程中调用很多Callable。这些Callable不会彼此共享任何信息。我需要为每个Callable定义一个超时,例如。运行时间不要超过5秒。每个Callable都可以在我不知道何时开始的不同时间运行。超时后线程应该被停止/杀死,结果对我来说不再有趣了。不应影响其他“正常”运行的线程。所以让我们以一个简单的可调用对象和我当前的Java代码为例。importjava.util.Date;importjava.util.concurrent.Callable;publicclassJobimpleme

java - 为什么在映射到 Callable<T> 时需要显式提供类型参数?

当试图回答不同的问题时,我发现我的代码只有在我明确给出类型参数时才能编译(我知道,无论代码计算什么都没有意义):publicDoublecalculateResult(intvalue){return0.0d;}privatevoidinit2(){List>list=IntStream.range(1,99).>mapToObj(value->(()->calculateResult(value))).collect(Collectors.toList());}删除类型参数时>来自mapToObj,它不编译,并给出错误cannotinferthetypevariablebyitsel

java - 如何让 Callable 任务提交到 ExecutorService 超时

我将Callable任务(使用submit())提交给ExecutionService的实现。偶尔我似乎遇到了死锁,但无法在何处工作或为什么发生,所以我想为任务设置超时,但我不清楚该怎么做?我应该在提交任务时在ExecutionService上使用invokeAny()而不是submit()并设置超时。我使用submit()一次提交许多任务,我也可以像这样使用invokeAny()吗,我很谨慎,因为我不明白为什么没有submit()方法需要超时。在我的ExecutorService的构造函数中修改keepAliveTime(但我认为这是在做其他事情修改我实际的Callable实现,但如

java - 在 Statement 和 ResultSet 上设置提取大小之间的区别

在Statement和ResultSet上设置提取大小有什么区别?Oracle文档说,如果在Statement上设置了提取大小,那么ResultSet也会使用相同的大小,只要在获取结果集之前设置提取大小即可。如果我将它设置在Statement或ResultSet上会有什么区别?我正在使用Oracle数据库。以下是有关它的Oracle文档:FetchSizeBydefault,whenOracleJDBCrunsaquery,itretrievesaresultsetof10rowsatatimefromthedatabasecursor.ThisisthedefaultOraclero