I/O读取流的时候发生阻塞是否会让线程进入BLOCKED状态?

在操作I/O流的时候经常会发生阻塞,这会让线程进入BLOCKED状态吗?I/O流中的阻塞和线程的BLOCKED状态是一回事吗?

javaioblockedthread
1
236
小课
小课2022-05-23 13:44
1 个回答

操作I/O流时发生阻塞不会让线程进入BLOCKED状态,它们并不是同一个概念,线程一般是在获取monitor lock的时候才会进入BLOCKED状态,更详细的内容可以参考Thread的生命周期和状态

1public static void main(String[] args) throws IOException {
2    Thread main = Thread.currentThread();
3    new Thread(() -> {
4        try {
5            Thread.sleep(1000);
6            System.out.println(main.getState());
7        } catch (InterruptedException e) {
8            e.printStackTrace();
9        }
10    }).start();
11    System.in.read();
12}

在main线程中启动了一个子线程用于打印main线程的状态,然后main线程开始读取输入流,打印输出如下

RUNNABLE
1
已修改
小课
小课2022-05-23 13:53
你的回答

内容