同步线程的几种状态
休眠状态、等待状态和执行状态是同步线程所特有的,其他的新状态、阻塞状态、死亡状态等是所有线程都有的.
休眠状态:所有在同步代码中调用wait forsingleobject方法的线程都会进入该状态,在没有被唤醒或没到达休眠结束时间前,状态是不会改变的。休眠前,线程会自动记录本身的一些状态,比如局部变量的值等(非局部的值是不保存的)。休眠状态的线程会存放在休眠池中,由系统管理。
等待状态:被唤醒的或到达休眠结束时间的休眠线程,和进入同步代码(*1 )的但没有得到钥匙(*2 )的线程,都会进入等待状态。在没有得到钥匙前,线程的状态是不会改变的。等待状态的线程会存放在等待池中,由系统管理。只有在等待池中的线程,才有资格抢夺钥匙。
运行状态:即正在运行的线程。运行状态的线程,能够调用wait 方法,让出钥匙,使自己休眠,进入到休眠池中,并会记录当前的运行状态,以便下次夺取钥匙的时候,能继续执行休眠前的动作。
注意:在驱动中所使用的“自旋锁”,它的机制不是让线程进入休眠状态,而是类似for循环一直询问。所以非常的浪费CPU时间。
线程的状态
最新推荐文章于 2024-11-09 22:18:41 发布