如何在Java中阻止线程在阻塞读取操作中等待? [英] How to stop a thread waiting in a blocking read operation in Java?

查看:103
本文介绍了如何在Java中阻止线程在阻塞读取操作中等待?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个执行以下代码的线程:

I have a thread that executes the following code:

public void run() {
    try {
        int n = 0;
        byte[] buffer = new byte[4096];
        while ((n = in.read(buffer)) != -1) {
            out.write(buffer, 0, n);
            out.flush();
        }
    } catch (IOException e) {
        System.out.println(e);
    }
}

其中 in System.in 。我怎样才能优雅地停止这样的线程?关闭 System.in ,也不使用 Thread.interrupt 似乎无法正常工作。

where in is System.in. How can I stop such thread gracefully? Neither closing System.in, nor using Thread.interrupt appear to work.

推荐答案

这是因为读取System.in(InputStream)是一个阻塞操作。

This is because reading System.in (InputStream) is a blocking operation.

看这里是否可以从具有超时的InputStream读取?

这篇关于如何在Java中阻止线程在阻塞读取操作中等待?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆