搜索
写经验 领红包

javaio阻塞线程状态(java线程阻塞的解决方法)

导语:java并发编程-I/O线程阻塞如何终止任务?

之前我们介绍了I/O阻塞,对其进行中断不能捕获异常。今天介绍一种关闭底层资源的方式或者使用NIO的方式,本文参考think in java。

关闭资源

我们看关闭资源后,线程可以被打断的例子,代码如下:

输出结果:

程序分析:

1、exec.shutdownNow()会等着资源的关闭,close()掉资源后,进行打断,输出异常后的处理语句"interrupted from blocked I/O"

通过NIO终止任务

NIO,也就是new I/O,我们通过下面的例子看看NIO 中断任务的,代码如下:

输出结果:

程序分析:

1、关于NIO,我们后面会介绍,今天不展开

2、我们可以通过关闭底层channel,释放阻塞后进行打断,捕获异常输出

3、JDK 里面管道输入输出 PipedWrite 和PipedReader 也可以被打断

本文内容由小快整理编辑!