java处理XFile连接超时问题

java nfs Xfile 连接响应超时处理

nfs远程获取文件,当远程nfs服务未启动时,java代码中XFile的连接会挂掉。这个程序就直接停住了。
之前用的是java调用mount命令行来做的,一直想用java代码来实现。后来想了个办法,有不对的大家也可以给给意见。

ExecutorService exec = Executors.newFixedThreadPool(1);
        Callable<XFile> call = new Callable<XFile>() {
            public XFile call() throws Exception {
                Thread thread = Thread.currentThread();
                thread.setName("NFS-CONNECT");//取特殊的名字,web项目可以后面加个sessinId啥的
                //开始执行耗时操作
                XFile xFile =   new XFile("nfs:// ip :/a/b/c/");
                xFile.exists();
                return xFile;
            }
        };
        
    try {
        Future<XFile> future = exec.submit(call);
        XFile xFile = future.get(2000, TimeUnit.MILLISECONDS); //任务处理超时时间设为 1 秒
        System.out.println("能否连接:" + xFile);
    } catch (TimeoutException ex) {
        System.out.println("处理超时啦....");
        ex.printStackTrace();
    } catch (Exception e) {
        System.out.println("处理失败.");
        e.printStackTrace();
    }
//上述程序,看似获取到了超时的返回,但是线程其实一直都在,现在要把线程关闭
    Set<Thread> set = Thread.getAllStackTraces().keySet();
    for(Thread thread:set){
        System.out.println(thread.getName());
        if("NFS-CONNECT".equals(thread.getName())){
            thread.stop();
            //thread.interrupt();
            //关闭    这里使用已经弃用的stop方法,这个线程hang住了,不会返回了,interrupt关闭不了。只能用stop了。上面代码已经收到数据返回了,这里应该不需要关心数据被破坏的问题了。stop 类似kill的功能吧
        }
    }

有用的上的可以看看
?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值