本文介绍了如何在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.
看这里
这篇关于如何在Java中阻止线程在阻塞读取操作中等待?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!