Java - 线程睡眠 - 锁定功能

时间:2014-01-13 14:39:07

标签: java multithreading

以下点

    Thread类的
  • sleep()方法不会放弃它获取的锁。

  • 在Java中使用sleep()时,不能保证当睡眠线程醒来时肯定会获得CPU,而是会转到Runnable状态并与其他线程争夺CPU。

如果当前线程没有释放锁定,为什么它必须转到Runnable State并与其他线程竞争执行

1 个答案:

答案 0 :(得分:3)

想象一下,CPU是食物处理器,Thread是厨师。一位厨师正在烹饪鸡尾酒并锁定物品martinibeer。另一个Thread正在烹饪汤并锁定List<Vegetable>。 想象一下,两位厨师都在争夺食品加工机。它们有自己的对象,它们需要CPU才能处理一个任务。

可运行状态意味着厨师已准备好使用处理器(即清洗Vegetables或打开瓶子)。无论他有多少物品,任何炊具都可以使用食物处理器。无论有什么锁定,任何进程都可以说“我想使用CPU”。