当程序进入死循环或者由于其他原因无法自行终止的时候,就需要强制退出程序了。

对于开发软件 Eclipse ,在程序执行超时后,可以点击 Terminate 按钮强制退出。

那么,我们可不可以通过程序设置一定的时间,当程序运行超过该时长后自行终止或者进行其他操作呢?

查了大量资料后发现,Future类就能满足这个需求。

Future类中重要方法包括get()和cancel()。

get()获取数据对象,如果数据没有加载,就会阻塞直到取到数据,而 cancel()是取消数据加载。

另外一个get(timeout)操作,表示如果在timeout时间内没有取到就失败返回,而不再阻塞。

通过这些方法即可实现我们要求。

Java 代码示例:

      final ExecutorService exec = Executors.newFixedThreadPool(1);Callable<String> call = new Callable<String>() {public String call() throws Exception {// 放入耗时操作代码块      int cash = 300;String name = "张三";System.out.println(name + "现在有" + cash + "元存款");User u = new User(name, cash);String[] arr = { "线程A", "线程B", "线程C", "线程D", "线程E", "线程F","线程G", "线程H", "线程I", "线程J" };for (int i = 0; i < 10; i++) {MyThread th = new MyThread(arr[i], u,(int) (Math.random() * 1000 - 500));th.start();}//耗时代码块结束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("处理超时啦....");System.exit(0);} catch (Exception e) {System.out.println("处理失败.");e.printStackTrace();}exec.shutdown();  // 关闭线程池    

将耗时的代码块放入标注的地方后,即可满足要求。

         System.out.println("处理失败.");e.printStackTrace();

在该示例程序中,当运行超时后,执行的是退出程序的操作。

也可以根据需要放入其他代码进行相关操作。

例如可以设置当处理超时时就忽略 该错误继续向下执行。

转载于:https://www.cnblogs.com/jiangu66/p/3217696.html

Java学习笔记——Java程序运行超时后退出或进行其他操作的实现相关推荐

  1. 【java学习笔记day01】运行第一个程序Helloworld!

    java学习笔记day01 2.什么是软件工程师? 3.什么是软件? 4.开发软件需要计算机编程语言,计算机编程语言有很多,例如 c, c++,Java,NET,c#,php... 5.Java软件工 ...

  2. 狂神说Java学习笔记 Java基础

    目录 机器语言 第二代语言(汇编语言) 第三代语言 高级语言 Java特性和优势 JDK(Java Development Kit) JRE(Java Runtime Enviroment) JVM( ...

  3. java学习笔记—java的学习路线

    Java体系涉及到三个方面:J2SE,J2EE,J2ME(KJAVA). J2SE,Java 2 Platform Standard Edition,我们经常说到的JDK,就主要指的这个,它是三者的基 ...

  4. Java学习笔记--Java中必记常见异常

    JAVA常见异常 Java.io.NullPointerException null 空的,不存在的 NullPointer 空指针 空指针异常,该异常出现在我们操作某个对象的属性或方法时,如果该对象 ...

  5. JAVA学习笔记—JAVA SE(四)JAVA核心库类(下)

    文章目录 四.JAVA核心库类(下) 1. 异常机制和File类 1.1 异常机制 1.1.1 基本概念 1.1.2 异常的分类 1.1.3 异常的避免 1.1.4 异常的捕获 1.1.5 异常的抛出 ...

  6. python程序运行键_python学习笔记-python程序运行

    小白初学python,写下自己的一些想法.大神请忽略. 安装python编辑器,并配置环境(见http://www.cnblogs.com/lynn-li/p/5885001.html中 python ...

  7. java学习笔记 java编程思想 第6章 访问权限控制

    文章目录 6.1 包:库单元(the library unit) 6.1.1 代码组织 6.1.2 创建独一无二的包名 练习1 练习2 6.1.3 定制工具类 6.1.4 用import改变行为 练习 ...

  8. JAVA学习笔记——JAVA基础语法(二)

    一.面向对象和面向过程的区别 面向过程:它所考虑的是过程和步骤,比如说开车去深圳我们要考虑的是怎么去也就是说:what  to do 面向对象:它所考虑的是有几个对象,比如开车去深圳我们要考虑的就是有 ...

  9. JAVA学习笔记——JAVA基础语法之精华

    一.标识符 概念:JAVA里面我们可以给他取名字的(变量.类.方法等等)就是标识符: 注意:1.标识符只能包含字母.数字.下划线还有美元符号$ 2.只能以字母.下划线和美元符号开头 二.变量 概念:J ...

最新文章

  1. docker搭建 LNMP 环境
  2. Java中ThreadPoolExecutor的参数理解
  3. Solidworks如何创建投影曲线
  4. C语言二维数组元素的多种表示方法小结
  5. (转).NET框架下使用双缓冲技术绘图
  6. 软件过程与项目管理第四周作业
  7. opengl 日地月运动模型_MaskFusion: 多运动目标实时识别、跟踪和重建
  8. Exchange 常见问题之二----3
  9. mysql存储过程批量建表
  10. HDU1878欧拉回路
  11. 4. Phpstorm svn
  12. Hadoop组件概览
  13. python解析pdf乱码,python pdfkit 中文乱码问题的解决方案
  14. 上海电信光猫超级管理员密码后门
  15. 朴素贝叶斯,凉鞋问题
  16. 机器人社社长事迹_社团先进个人事迹材料
  17. 中国量子计算机应用普及,郭光灿院士专访:量子产业全梳理,15年后量子计算机或可普及...
  18. 计算集群MOSIX-3.1.1.1.for_kernel-3.2.23 配置
  19. Bribe the Prisoners(2009 Round 1C C)
  20. eslint报错Parsing error: Unexpected token prettier/prettier

热门文章

  1. 如何添加WebService调用时的用户认证
  2. Main函数参数argc,argv说明
  3. python实验报告代写_TensorFlow作业代写、代做Python程序语言作业、代写github课程作业、Python实验作业代写...
  4. hadoop之BlockPoolManager源码分析
  5. java定义一个类显示没有_Java 中的每个类都至少有一个构造方法,一个类中如果没有定义构造方法,系统会自动为这个类创建一个默认的构造方法。_学小易找答案...
  6. (09)Vivado IO约束
  7. (09)FPGA设计流程
  8. FPGA 常用存储器比较
  9. qt如何把dll封装到exe中_QT在VS2013中的配置
  10. 数据结构与算法分析(五)——常用排序