【问题标题】:Does a thread of execution goes to "waiting" state by executing wait() and join() both?执行线程是否通过同时执行 wait() 和 join() 进入“等待”状态?
【发布时间】:2012-01-11 11:31:31
【问题描述】:

线程处于活动状态但既不运行也不可运行有 3 种状态:-

  1. 睡觉
  2. 已屏蔽
  3. 等待中

当线程执行 sleep() 方法时,它会在其参数指定的时间段内从运行状态进入 SLEEPING 状态(比如几毫秒)。

当一个线程正在等待某个对象上的锁,该对象由于同步方法或块而被其他线程获取时,它会被该线程阻塞。

那么,我们可以说一个线程在其他线程上执行 wait() 时进入 WAITING 状态吗?

在某个线程上调用 join() 也是如此。

那么,我们可以说 wait()(来自 java.lang.Object)和 join()(来自 java.lang.Thread)都将线程的状态转换为 WAITING 吗?

【问题讨论】:

    标签: java multithreading


    【解决方案1】:

    这在javadoc of Thread.State中有所描述:

    public static final Thread.State WAITING

    等待线程的线程状态。线程处于等待状态 由于调用了以下方法之一:

        Object.wait with no timeout
        Thread.join with no timeout
        LockSupport.park
    

    处于等待状态的线程正在等待另一个线程执行 一个特定的动作。例如,一个线程调用了 对象上的 Object.wait() 正在等待另一个线程调用 该对象上的 Object.notify() 或 Object.notifyAll()。一个线程 已调用 Thread.join() 正在等待指定线程 终止。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多