Java中究竟哪种方法会导致线程长时间处于阻塞状态呢?

2026-04-19 21:051阅读0评论SEO问题
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计2615个文字,预计阅读时间需要11分钟。

Java中究竟哪种方法会导致线程长时间处于阻塞状态呢?

一、为什么引入线程阻塞机制?为了解决对共享存储区的访问冲突,Java 引入了同步机制。现在让我们来考察多个线程对共享资源的访问,显然同步机制已经不够用了,因为可能在任意时刻都存在多个线程对共享资源的访问。

一、为什么引入线程阻塞机制?

为了解决对共享存储区的访问冲突,Java 引入了同步机制,现在让我们来考察多个线程对共享资源的访问,显然同步机制已经不够了,因为在任意时刻所要求的资源不一定已经准备好了被访问,反过来,同一时刻准备好了的资源也可能不止一个。为了解决这种情况下的访问控制问题,Java 引入了对阻塞机制的支持

阻塞指的是暂停一个线程的执行以等待某个条件发生(如某资源就绪),学过操作系统的同学对它一定已经很熟悉了。Java 提供了大量方法来支持阻塞,下面让我们逐一分析。

二、Java中实现线程阻塞的方法:

(1)线程睡眠:Thread.sleep (long millis)方法,使线程转到阻塞状态。millis参数设定睡眠的时间,以毫秒为单位。当睡眠结束后,就转为就绪(Runnable)状态。sleep()平台移植性好。

(2)线程等待:Object类中的wait()方法,导致当前的线程等待,直到其他线程调用此对象的 notify() 唤醒方法。这个两个唤醒方法也是Object类中的方法,行为等价于调用 wait() 一样。

阅读全文
标签:线程阻塞

本文共计2615个文字,预计阅读时间需要11分钟。

Java中究竟哪种方法会导致线程长时间处于阻塞状态呢?

一、为什么引入线程阻塞机制?为了解决对共享存储区的访问冲突,Java 引入了同步机制。现在让我们来考察多个线程对共享资源的访问,显然同步机制已经不够用了,因为可能在任意时刻都存在多个线程对共享资源的访问。

一、为什么引入线程阻塞机制?

为了解决对共享存储区的访问冲突,Java 引入了同步机制,现在让我们来考察多个线程对共享资源的访问,显然同步机制已经不够了,因为在任意时刻所要求的资源不一定已经准备好了被访问,反过来,同一时刻准备好了的资源也可能不止一个。为了解决这种情况下的访问控制问题,Java 引入了对阻塞机制的支持

阻塞指的是暂停一个线程的执行以等待某个条件发生(如某资源就绪),学过操作系统的同学对它一定已经很熟悉了。Java 提供了大量方法来支持阻塞,下面让我们逐一分析。

二、Java中实现线程阻塞的方法:

(1)线程睡眠:Thread.sleep (long millis)方法,使线程转到阻塞状态。millis参数设定睡眠的时间,以毫秒为单位。当睡眠结束后,就转为就绪(Runnable)状态。sleep()平台移植性好。

(2)线程等待:Object类中的wait()方法,导致当前的线程等待,直到其他线程调用此对象的 notify() 唤醒方法。这个两个唤醒方法也是Object类中的方法,行为等价于调用 wait() 一样。

阅读全文
标签:线程阻塞