我已经创建了一个可调用的打印几行和Hibernate2秒。我创建了一个main方法,它创建了这个callable的10个实例,并传递给ExecutorService的invokeALL方法。
service.invokeAll(callableList, 3, SECONDS);
无论InvokeAll中的时间设置如何,我都将获得所有结果或所有CancellationExceptions。
我真的希望在调用future.get()时至少有一些任务已经完成并返回结果。
简短的回答。
不是所有任务都在3秒内完成。
回答很长。
TPE将运行所有任务并等待它们完成。它将在每个将来执行get
,3秒作为get
方法的等待时间。如果所有任务在3秒内完成,则期货列表将不受影响地返回。
如果未在预期时间内完成,则取消未完成的期货。因此,如果你有5个任务,前2个任务完成了,但第三个任务超时,那么3、4和5个任务就会被取消。
文件中略有说明
而且
返回时,未完成的任务被取消。
问题内容: 当我运行以下代码片段时 我收到以下消息: 并有4个条目(与打印相对应的3的a为0(实际错误为18) 但是,如果我替换为,则会得到预期的结果: 消息是,我在…中只有一个条目 有什么办法可以避免??的奇怪行为? 问题答案: 不,您无法避免这种行为。它是TdsParser.ThrowExceptionAndWarning()编写方式的结果 特别是这条线 我的猜测是,无论出于何种原因,对于Ex
问题内容: 考虑以下Java源代码: 该是。 为什么该语句有时会抛出? 谢谢。 问题答案: 线程安全 如果您的代码是多线程的,则有可能。例如: 如果在语句执行之后(但在循环之前)立即将另一个线程设置为,则您将获得一个。通过使用访问器(与延迟初始化结合使用)可以避免这种情况。 另外,如其他人所提到的,如果可能,请避免使用有利于泛型的此类循环构造。有关详细信息,请参见其他答案。 配件提供保护 如果始终
问题内容: 由于某种原因,我安装的gcc似乎在错误消息中代替所有%s的字符打印了“带克拉的字符”,例如, 有人看过吗?(毋庸置疑,Google很难做到这一点。) (在Ubuntu 8.10上) 编辑:http ://ubuntuforums.org/showthread.php?t=252832上的那个人说要设置LC_MESSAGES = en_US,但这对我没有任何帮助。 问题答案: 啊哈!问题
我的项目使用apache超文本传输协议客户端向超文本传输协议服务器发送超文本传输协议请求。但是奇怪的事情发生了。我设置连接超时为10秒,套接字超时为10秒。对于每一天,大多数请求时间(大约100个请求)是100ms-200ms,但是左(大约10个请求)将抛出连接超时异常,这意味着连接建立时间是10s以上。我不知道发生了什么。 我的电话是: HttpUtils。post(主机,空,参数,“UTF-8
我正在创建,比如说,15个Callable任务,并提交它们: 然后我收集15个MyResult对象: 问题是:我没有从get()方法获得所有15个MyResult对象,而是有时获得不到15个对象。有时12有时10有时甚至更少,有时全部15。 我的印象是,方法是一个阻塞调用,将等待所有15个线程返回各自的结果,但看起来我错过了其中的一些线程并继续前进。我做错了什么?我是否未正确收集结果/等待结果?当
问题内容: 在Java中,我使用的是方法,但不确定为什么它不会引发“索引不足”错误。 字符串的索引从0到4开头,但是基于我可以调用foo.substring(0)并获取“ abcde”的事实,该方法将startIndex和endIndex作为参数。 那么为什么substring(5)起作用?该索引应超出范围。有什么解释? 此代码输出: 当我用6替换5时: 然后我得到错误: 问题答案: 根据Java