时间:2021-05-20
我们在开发过程中,在进行时间操作时,如果在规定的时间内完成处理的话,有可能会回到正确的结果。否则,就会被视为超时任务。此时,我们不再等待(不再执行)的时间操作,直接向调用者传达这个任务需要时间,被取消了。
java已经为我们提供了解决办法。jdk1.5带来的并发库Future类可以满足这一需求。Future类中重要的方法有get()和cancel()。get()获取数据对象,如果数据没有加载,则在获取数据之前堵塞,cancel()取消数据加载。另一个get(timeout)操作表明,如果timeout时间内没有得到,就会失败回来,不会堵塞。
利用泛型和函数式接口编写一个工具类,可以让超时处理更方便,而不用到处写代码。
实例知识点扩展:
属性校验工具类
/** * 校验对象中的属性。如果属性为null,抛异常。如果属性为字符串(空串或空格),抛异常。 * @author mex * @date 2019年4月18日 * @param e 对象 * @param fieldNames 属性名称数组 * @return void * @throws Exception */ public static <E> void validateAttr(E e, String[] fieldNames) throws Exception { if (null == e) { throw new Exception("请求对象为空"); } if (null == fieldNames) { return; } for (int i = 0; i < fieldNames.length; i++) { String fieldName = fieldNames[i]; Field field = e.getClass().getDeclaredField(fieldName); String typeName = field.getGenericType().getTypeName(); field.setAccessible(Boolean.TRUE); Object fieldValue = field.get(e); // 判断该属性为null的情况 if (null == fieldValue) { throw new Exception("请求字段:" + fieldName + "不能为空"); } // 如果该属性为字符串,判断其为空或空格的情况 if ("java.lang.String".equals(typeName)) { if (StringUtils.isBlank((String)fieldValue)) { throw new Exception("请求字段:" + fieldName + "不能为空"); } } } }到此这篇关于Java编写超时工具类实例讲解的文章就介绍到这了,更多相关Java编写超时工具类内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
Java调用Oracle存储过程详解步骤:1、编写Oracle存储过程2、编写数据库获取连接工具类3、编写简单应用调用存储过程实现:1、Oracle存储过程:/
Java自定义异常类的实例详解为什么要自己编写异常类?假如jdk里面没有提供的异常,我们就要自己写。我们常用的类ArithmeticException,Null
在讲解动态加载类之前呢,我们先弄清楚为什么要动态加载类,静态加载不行吗?我们可以看下面的实例:我在文件夹里写了Office.java类和Word.java类,如
本文实例为大家分享了java金额数字转中文工具类的具体代码,供大家参考,具体内容如下java金额数字转中文工具类ConvertNum.javapackageli
lombok注解介绍lombok注解文档lombok官网下载lombok是一个可以帮助我们简化java代码编写的工具类,尤其是简化javabean的编写,即通过