zoukankan      html  css  js  c++  java
  • java接口请求超时处理方法

    //*********
             // 成员内部类
            class CallableThread implements Callable<Result> {
                @Override
                public Result call() {
                    try {
                        // 假设这个是一个耗时的网络 请求
                      Result r = HBaseUtil.getRow("grid_data", Bytes.toBytes(row_key));
                        return r;
                    } catch (Exception e) {
                        // 假装记录一下日志
                        e.printStackTrace();
                        return null;
                    }
                }
            }
            Callable<Result> callableThread=new CallableThread();
            FutureTask<Result> task= new FutureTask<>(callableThread);
            // 开启线程
            new Thread(task).start();
            Result r;
            try {
                // 如果3秒没有返回值就 抛出异常
                r = task.get(3000, TimeUnit.MILLISECONDS);
            } catch (Exception e) {
                r=null;
            }
            // 结束事件
            //***********
    
    
    
    方式二:
            //*********
            final ExecutorService exec = Executors.newSingleThreadExecutor();
            Callable<Result>  call = new Callable<Result>(){
                public Result call() throws Exception{
                    //这个是一个耗时的网络 请求
                    Result r = HBaseUtil.getRow("grid_data", Bytes.toBytes(row_key));
                    return r;
                }
            };
            // Future是一个接口,该接口用来返回异步的结果
            Future<Result> future = exec.submit(call);
            Result r = null;
            try{
                // 同步结果,并且设置超时时间   
                r = future.get(1000 * 1,TimeUnit.MILLISECONDS);
            }catch(InterruptedException e){
                e.printStackTrace();
            } catch (ExecutionException e) {
                e.printStackTrace();
            } catch (TimeoutException e) {
                e.printStackTrace();
            }
            //执行结束后,手动关闭线程池
            exec.shutdown();
    
            //***********
  • 相关阅读:
    利用Session和HashTable制作购物车实例
    在windows 7上安装Maven2.2.1
    tail & cut 命令
    软件开发常用名词中英文对照
    字符,字节和编码
    grep 简介
    HSQLDB: java程序使用hsqldb 入门教程 java启动hsqldb
    eclipse 安装 maven 插件
    JNI 返回结构体参数
    HSQLDB 安装与使用
  • 原文地址:https://www.cnblogs.com/KdeS/p/12033472.html
Copyright © 2011-2022 走看看