前段时间在搞一个批量处理程序,涉及到多线程操作。但是后台服务很不给力,并发一大常常就挂了,长时间不给返回,导致我的程序也挂死在那里……
那么能不能设置一段代码执行的超时时间呢?如果处理超时就忽略该错误继续向下执行。
可是在网上搜了大半天,找到的都是无用的代码,根本不能用。
查了大量资料后发现,java早已经给我们提供了解决方案。jdk1.5自带的并发库中Future类就能满足这个需求。Future类中重要方法包括get()和cancel()。get()获取数据对象,如果数据没有加载,就会阻塞直到取到数据,而 cancel()是取消数据加载。另外一个get(timeout)操作,表示如果在timeout时间内没有取到就失败返回,而不再阻塞。
到这里,此问题就迎刃而解了。废话不多说,直接上代码:
public class ThreadTest { public static void main(String[] args) throws InterruptedException, ExecutionException { final ExecutorService exec = Executors.newFixedThreadPool(1); Callable<String> call = new Callable<String>() { public String call() throws Exception { //开始执行耗时操作 Thread.sleep(1000 * 5); return "线程执行完成."; } }; try { Future<String> future = exec.submit(call); String obj = future.get(1000 * 1, TimeUnit.MILLISECONDS); //任务处理超时时间设为 1 秒 System.out.println("任务成功返回:" + obj); } catch (TimeoutException ex) { System.out.println("处理超时啦...."); ex.printStackTrace(); } catch (Exception e) { System.out.println("处理失败."); e.printStackTrace(); } // 关闭线程池 exec.shutdown(); } }
注意,以上代码需要 1.5 以上的 jdk 才可编译。
执行后可以发现抛出了 TimeoutException ,打印出了"处理超时啦...." 的文字,在此处可进行超时后的处理。
相关推荐
timeout: 1000, // 超时时间设置,单位毫秒 type: 'get', // 请求方式,get或post data: {}, // 请求所传参数,json格式 dataType: 'json', // 返回的数据格式 success: function(data) { alert("成功"); }, ...
这段代码定义了一个`TcpClientWithTimeout`类,它封装了异步连接过程并设置了超时。`ConnectAsync`方法接收一个`IPEndPoint`对象,表示服务器的IP地址和端口。它创建了一个新的`Socket`对象,然后同时启动连接任务和...
### JS之Session超时提示代码解析 ...此方法简单实用,适用于那些希望减少服务器负担、提高前端响应能力的应用场景。对于开发者而言,掌握这种前端技术有助于更好地管理用户会话,提升应用的安全性和用户体验。
一段代码如果比较耗时,超过一定时间后,自动中断,继续向下执行。
这段代码会覆盖php.ini中相应的max_execution_time设置,并只对当前执行的脚本有效。如果在脚本执行过程中需要取消设置的执行时间限制,可以将max_execution_time设置为0。 在使用这些方法设置页面超时时间时,还...
这段代码定义了一个名为`set_timeout`的装饰器工厂,它接受两个参数:超时时间`num`和超时后执行的回调函数`callback`。装饰器内部定义了`handle`函数,当接收到信号`SIGALRM`时,该函数将抛出`RuntimeError`异常。`...
执行一条代码时间过长 而且还不报错,卡死在那。还要继续执行下面代码,如何操作。 下面是个简单的实例 pip安装 第三方eventlet这个包 – pip install eventlet import time import eventlet#导入eventlet这个模块 ...
在Windows Presentation Foundation(WPF)应用程序开发中,有时我们需要实现一种机制,当用户在一段时间内没有进行任何操作时,程序自动退出或进入休眠状态。这种功能常用于节省系统资源,或者在无人操作的安全环境...
解决线程的死掉问题和超时问题特别好使,在Java中,如果需要设定代码执行的最长时间,即超时,可以用Java线程池ExecutorService类配合Future接口来实现。 Future接口是Java标准API的一部分,在java.util.concurrent...
然而,要注意的是,如果使用了UpdatePanel控件,其内部的请求超时值受页面请求超时时间设置的影响。如果设置超时值大于等于90秒,UpdatePanel内部请求的超时值将被强制设为90秒;如果设置小于90秒,则使用设置的值。...
这种方法的核心思想是在用户不进行任何操作的情况下,每隔一段时间就自动向服务器发送一次请求,以此来延长会话的有效期。 #### 示例代码详解 下面是一个具体的实现案例: 1. **HTML部分**: ```html <!-- ...
"执行"可能是指执行一段特定的代码或子程序,而"运行"可能是指启动外部应用程序。这两者都是控制程序流程的关键部分。 以上就是"易语言脚本代码整理"主题中涵盖的一些关键知识点,它们展示了易语言在代码组织、参数...
4. **实时更新**:使用JavaScript的定时器(如setInterval)每隔一段时间(如1秒)重复执行计算和更新显示的操作,以保持倒计时的动态更新。 5. **格式化输出**:将计算出的时间差转换为用户友好的格式,如“天:...
可以在脚本中加入以下代码,将特定脚本的最大执行时间设置为300秒: ```php set_time_limit(300); // 设置当前脚本的最大执行时间为300秒 ``` 将此代码行添加在脚本的开始位置,便可以对当前脚本单独设置执行时间...
### Java线程超时控制实现详解 #### 一、引言 在开发过程中,经常会遇到需要对线程...对于需要精细控制某段代码执行时间的情况,推荐使用守护线程的方法;而对于简单的线程超时控制需求,使用`join`方法更为简单直接。
在Python编程中,有时我们需要让程序暂停一段时间再执行后续的操作。这种需求在很多场景中都很常见,比如定时任务、网络爬虫中的请求间隔控制等。本文将详细介绍如何在Python中实现等待10秒后执行下一命令的方法。 ...
一时不知所措,蜡人张的文章 代码如下: 修改表属性后使用“索引/键”对话框为一个大型表(记录数13,239,473)创建索引,提示: – 无法创建索引“IX_TableName”。 超时时间已到。在操作完成之前超时时间已过或...
- `scheduleAtFixedRate(Runnable command, long initialDelay, long period, TimeUnit unit)`: 以固定速率重复执行任务,即使前一次执行超时,也不会影响下次执行的时间。 - `scheduleWithFixedDelay(Runnable ...
在IT领域,网络编程是不可或缺的一部分,特别是在C++这样的系统级编程语言中。TCP(传输控制协议)是一种面向连接的、...通过学习和分析这段代码,开发者可以提升自己在网络编程领域的技能,更好地理解和应用相关技术。
通过分析和理解这段代码,开发者可以学习如何在自己的项目中有效地利用AD1674进行模数转换。 总的来说,AD1674的C语言编程涉及了硬件接口设计、同步和异步通信、数据转换以及错误处理等多个方面。熟悉这些概念和...