在Java类中,我有一个方法,有时需要很长时间才能执行。也许它挂在该方法流程中。我想要的是,如果该方法在特定时间内未完成,则程序应退出该方法,并继续进行其余的流程。
请让我知道有什么方法可以处理这种情况。
您必须使用线程才能实现此目的。线程是无害的:)下面的示例将一段代码运行10秒钟,然后结束它。
public class Test {
public static void main(String args[])
throws InterruptedException {
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
System.out.println("0");
method();
}
});
thread.start();
long endTimeMillis = System.currentTimeMillis() + 10000;
while (thread.isAlive()) {
if (System.currentTimeMillis() > endTimeMillis) {
System.out.println("1");
break;
}
try {
System.out.println("2");
Thread.sleep(500);
}
catch (InterruptedException t) {}
}
}
static void method() {
long endTimeMillis = System.currentTimeMillis() + 10000;
while (true) {
// method logic
System.out.println("3");
if (System.currentTimeMillis() > endTimeMillis) {
// do some clean-up
System.out.println("4");
return;
}
}
}
}
本文向大家介绍Java中设置session超时(失效)的三种方法,包括了Java中设置session超时(失效)的三种方法的使用技巧和注意事项,需要的朋友参考一下 1.在web容器中设置(此处以tomcat为例) 在tomcat-5.0.28\conf\web.xml中设置,以下是tomcat 5.0中的默认配置: Tomcat默认session超时时间为30分钟,可以根据需要修改,负数或0为不限
如何用clone()方法克隆Java对象 我有一个关于在java中正确实现类的方法的问题。我知道这是不好的做法,但我需要在考试中知道这一点…在上面的讨论中,他们说调用-但我不明白如果超级函数没有实现克隆会发生什么。例如,假设我有一个扩展Y的类X。X实现了Cl的,而Y没有。Y的方法应该抛出一个异常。那么在这种情况下我们该怎么办? 我能找到的所有解释都以某种方式假设所有超类都实现了克隆,或者至少我是这
本文向大家介绍Java实现任务超时处理方法,包括了Java实现任务超时处理方法的使用技巧和注意事项,需要的朋友参考一下 任务超时处理是比较常见的需求,比如在进行一些比较耗时的操作(如网络请求)或者在占用一些比较宝贵的资源(如数据库连接)时,我们通常需要给这些操作设置一个超时时间,当执行时长超过设置的阈值的时候,就终止操作并回收资源。Java中对超时任务的处理有两种方式:一种是基于异步任务结果的超时
问题内容: 我试图找出网络上的特定主机是否可以访问。我的java代码如下: 这工作得很好,但是如果我将超时降低为500ms,它将不再指定可访问的主机。我计划在一个循环中检查很多主机,因此低超时非常重要。如果我从Windows命令行手动ping主机,则所需时间少于10ms。 那么,为什么Java方法需要更高的超时才能成功?有使用的替代方法吗? 问题答案: 这取决于您所指的可达性。如果仅找到在特定端口
我对Java/Android中的继承/接口有点困惑,不确定我是否走上了正确的道路。基本上,我在Android系统中使用Parcelable,由于方法未定义,所以会出现错误。 我有一个动物超类和几个子类(狗、猫等)。在第一个活动中,您选择一只动物,然后它将其打包并传递给第二个活动: 问题是“updateImage”只存在于子类中,因此它不会在这里编译。我不希望这个方法出现在超类中,因为输出根据动物的
假设我有一些异步计算,比如: 如果异步供应商根据某个指定的超时超时,有没有一种很好的方法为foo提供默认值?理想情况下,这样的功能也会尝试取消运行缓慢的供应商。例如,是否存在与以下假设代码类似的标准库功能: 编辑:这里有一个受Java8启发的解决方案:在lambda表达式中强制检查异常处理。为什么是强制的,而不是可选的?,但不幸的是它阻塞了一个线程。如果我们依赖于createFoo()异步检查超时