iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >Java如何编写超时工具类
  • 902
分享到

Java如何编写超时工具类

2023-06-14 17:06:22 902人浏览 八月长安
摘要

这篇文章主要介绍Java如何编写超时工具类,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Java的优点是什么1. 简单,只需理解基本的概念,就可以编写适合于各种情况的应用程序;2. 面向对象;3. 分布性,Java是

这篇文章主要介绍Java如何编写超时工具类,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

Java的优点是什么

1. 简单,只需理解基本的概念,就可以编写适合于各种情况的应用程序;2. 面向对象;3. 分布性,Java是面向网络的语言;4. 鲁棒性,java提供自动垃圾收集来进行内存管理,防止程序员在管理内存时容易产生的错误。;5. 安全性,用于网络、分布环境下的Java必须防止病毒的入侵。6. 体系结构中立,只要安装了Java运行时系统,就可在任意处理器上运行。7. 可移植性,Java可以方便地移植到网络上的不同机器。8.解释执行,Java解释器直接对Java字节码进行解释执行。

1、说明

java已经为我们提供了解决办法。jdk1.5带来的并发库Future类可以满足这一需求。Future类中重要的方法有get()和cancel()。get()获取数据对象,如果数据没有加载,则在获取数据之前堵塞,cancel()取消数据加载。另一个get(timeout)操作表明,如果timeout时间内没有得到,就会失败回来,不会堵塞。

利用泛型和函数式接口编写一个工具类,可以让超时处理更方便,而不用到处写代码。

2、实例

@Slf4j@Component@NoArgsConstructorpublic class TimeoutUtil {     private ExecutorService executorService;     public TimeoutUtil(ExecutorService executorService) {        this.executorService = executorService;    }         public <R> Result<R> doWithTimeLimit(Supplier<R> bizSupplier, int timeout) {        return doWithTimeLimit(bizSupplier, null, timeout);    }         public <R> Result<R> doWithTimeLimit(Supplier<R> bizSupplier, R defaultResult, int timeout) {         R result;        String errMsg = "Null value";        FutureTask<R> futureTask = new FutureTask<>(bizSupplier::get);        executorService.execute(futureTask);        try {            result = futureTask.get(timeout, TimeUnit.MILLISECONDS);        } catch (InterruptedException | ExecutionException | TimeoutException e) {            errMsg = String.fORMat("doWithTimeLimit执行超过%d毫秒,强制结束", timeout);            log.error(errMsg, e);            futureTask.cancel(true);            result = defaultResult;        }        return of(result, errMsg);    }         private String randomSpentTime() {        Random random = new Random();        int time = (random.nextInt(10) + 1) * 1000;        log.info("预计randomSpentTime方法执行将耗时: " + time + "毫秒");        try {            Thread.sleep(time);        } catch (Exception e) {        }        return "randomSpentTime --> " + time;    }     public static void main(String[] args) throws Exception {        ExecutorService executorService = new ThreadPoolExecutor(1, 1,                0L, TimeUnit.MILLISECONDS,                new LinkedBlockingQueue<Runnable>(),                runnable -> {                    Thread thread = new Thread(runnable);                    // 以守护线程方式启动                    thread.setDaemon(true);                    return thread;                });        TimeoutUtil timeoutUtil = new TimeoutUtil(executorService);        for (int i = 1; i <= 10; i++) {            log.info("\n=============第{}次超时测试=============", i);            Thread.sleep(6000);            long start = System.currentTimeMillis();            String result = timeoutUtil.doWithTimeLimit(() -> timeoutUtil.randomSpentTime(), 5000).getOrElse("默认");            log.info("doWithTimeLimit方法实际耗时{}毫秒,结果:{}", System.currentTimeMillis() - start, result);        }    } }

以上是“Java如何编写超时工具类”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注编程网精选频道!

--结束END--

本文标题: Java如何编写超时工具类

本文链接: https://www.lsjlt.com/news/273867.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Java如何编写超时工具类
    这篇文章主要介绍Java如何编写超时工具类,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Java的优点是什么1. 简单,只需理解基本的概念,就可以编写适合于各种情况的应用程序;2. 面向对象;3. 分布性,Java是...
    99+
    2023-06-14
  • 关于Java日期工具类的编写
    目录Java日期工具类编写JavaCalendar日历类的时间操作日期工具类Java日期工具类编写 将字符串转换为对应日期 Date date = simpleDateFormat....
    99+
    2023-05-18
    Java 日期 Java工具类 Java日期工具类
  • Java工具类实现高效编写报表
    目录为什么使用java代码写报表遇到的问题工具类CollectionDataStream如何使用MyCollectors组合使用的实现优势本文中的工具类和demo的代码仓库 为什么使...
    99+
    2022-11-21
    Java工具类写报表 Java写报表
  • 利用Java怎么实现一个超时工具类
    本文章向大家介绍利用Java怎么实现一个超时工具类的基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。Java的特点有哪些Java的特点有哪些1.Java语言作为静态面向对象编程语言的代表,实现了面向对象理论,允许程...
    99+
    2023-06-06
  • java中DateUtils时间工具类如何实现
    这篇文章将为大家详细讲解有关java中DateUtils时间工具类如何实现,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。具体内容如下package com.example.administrat...
    99+
    2023-05-30
    java dateutils
  • Java超级实用的Freemarker工具类
    目录一、工具类二、测试一、工具类 public class FreemarkerUtil {         public static void execute(String f...
    99+
    2024-04-02
  • 如何在Android中编写一个Intent跳转工具类
    这篇文章给大家介绍如何在Android中编写一个Intent跳转工具类,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。一、概述Intent的中文意思是“意图,意向”,在Android中提供了Intent机制来协助应用间的...
    99+
    2023-05-30
    android intent
  • java测试类如何编写
    编写Java测试类有以下几个步骤:1. 导入所需的测试框架:通常使用JUnit测试框架来编写Java测试类,需要在测试类的开头导入J...
    99+
    2023-08-17
    java
  • 怎么使用Java工具类实现高效编写报表
    本篇内容主要讲解“怎么使用Java工具类实现高效编写报表”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么使用Java工具类实现高效编写报表”吧!为什么使用java代码写报表对于报表数据大部分情...
    99+
    2023-07-04
  • 如何用Python编写nmap扫描工具
    这篇文章主要介绍“如何用Python编写nmap扫描工具”,在日常操作中,相信很多人在如何用Python编写nmap扫描工具问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何用Python编写nmap扫描工具...
    99+
    2023-06-20
  • java如何编写测试类
    在Java中,编写测试类的一种常见方式是使用JUnit框架。下面是一个简单的示例:1. 首先,确保你的项目中已经添加了JUnit库。...
    99+
    2023-08-31
    java
  • Java编写的实体返回VO工具
    好久不见 最近些许有点懒惰 程序员嘛 每个月总会有几天的 你懂得 那最近发现好的代码写出来真的会让人有种赏心悦目的存在 相反就会有一种想掐死写代码的那个人 所以我最近写了一个小工具 ...
    99+
    2024-04-02
  • 利用Java怎么编写一个DES加密解密工具类
    今天就跟大家聊聊有关利用Java怎么编写一个DES加密解密工具类,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。DesUtil.javapackage lsy;import java....
    99+
    2023-05-31
    java des ava
  • 教你如何使用Java多线程编程LockSupport工具类
    目录LockSupport类LockSupport.park()1.调用unpack方法获得许可2.调用中断interrupts方法获得许可parkNanos(long nanos)...
    99+
    2024-04-02
  • java并发编程工具类JUC之ArrayBlockingQueue
    Java BlockingQueue接口java.util.concurrent.BlockingQueue表示一个可以存取元素,并且线程安全的队列。换句话说,当多线程同时从 Jav...
    99+
    2024-04-02
  • Java中的时间工具类有哪些
    Java中的时间工具类有哪些?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。具体如下:package org.zhy.date;import java.text.DateForm...
    99+
    2023-05-31
    java ava
  • Java基础之颜色工具类(超详细注释)
    颜色工具类(超详细注释) 设置属性值自动格式化rgb值和十六进制颜色值。 import java.util.HashMap; import java.util.Map; pub...
    99+
    2024-04-02
  • 如何使用node编写自己的cli工具
    这篇文章主要介绍了如何使用node编写自己的cli工具,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。准备开发一个cli工具前首先要想好它能做...
    99+
    2024-04-02
  • 如何在Java中使用Collections工具类
    本篇文章为大家展示了如何在Java中使用Collections工具类,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。java基本数据类型有哪些Java的基本数据类型分为:1、整数类型,用来表示整数的数...
    99+
    2023-06-14
  • 如何在Java中使用Semaphore工具类
    这篇文章将为大家详细讲解有关如何在Java中使用Semaphore工具类,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。一、Semaphore的理解Semaphore属于java.util.c...
    99+
    2023-06-15
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作