zoukankan      html  css  js  c++  java
  • 某方法在规定时间没有返回,超时机制

    package com.****.winUtliTest.koufeiOutTime;
    
    import java.util.concurrent.Callable;
    import java.util.concurrent.ExecutorService;
    import java.util.concurrent.Executors;
    import java.util.concurrent.Future;
    import java.util.concurrent.TimeUnit;
    /***
    * 设置方法的 超时时间
    * @ClassName: JavaSetTime 
    * @Description: TODO
    * @author: 92649498
    * @date: 2019年12月16日 下午4:59:09 
    * Class explain:
    */
    public class JavaSetTime {
    
    public static void main(String[] args) {
    Callable<String> task = new Callable<String>() {
    @Override
    public String call() throws Exception {
    //设置执行响应时间的方法体
    String str = JavaSetTime.sleepJavaTest();
    System.err.println("打印str"+str);
    return str;
    }
    };
    ExecutorService exeservices = Executors.newSingleThreadExecutor();
    Future<String> future = exeservices.submit(task);
    try {
    //设置方法
    String result = future.get(5, TimeUnit.SECONDS);
    System.err.println("打印result"+result);
    } catch (Exception e) {
    e.printStackTrace();
    //异常处理的方法
    System.err.println("5秒钟没有执行完毕!这里是异常处理的方法");
    }
    }
    
    public static String sleepJavaTest() {
    
    try {
    /*java中sleep与wait的区别
    * 对于sleep方法导致程序暂停执行指定的时间,让出cpu给其他线程。但是它的监控状态依然保持,时间到了就会恢复。
    * 在sleep方法中,线程不会释放对象锁。
    * 对于wait方法,线程会放弃对象锁,进入等待次对象的等待锁定池,
    * 只有针对此对象调用notify()后,本线程才进入对象锁定池的准备。 
    */
    Thread.sleep(6000);
    return "当前函数成功的返回";
    } catch (InterruptedException e) {
    e.printStackTrace();
    return "执行异常";
    }
    }
    
    
    }
    只限阅读,未经允许不得转载,如有问题请@本人,如我方内容侵权请及时告知我方。
  • 相关阅读:
    mysql时间日期的加、减
    IDEA 下的svn检出maven代码
    IDEA中如何显示和关闭工具栏、目录栏
    Idea集成使用SVN教程
    Python PEP8 代码规范常见问题及解决方法
    Word文档中手写签名操作说明
    19.名称空间和作用域
    18.函数的参数
    17.文件处理
    16.字符编码
  • 原文地址:https://www.cnblogs.com/wzy-525/p/12059460.html
Copyright © 2011-2022 走看看