Java 多线程中 Thread.sleep() 方法调用期间,线程握住的锁是谁?
thread.sleep() 的疑问
在 java 多线程编程中,thread.sleep() 方法用于让当前线程进入休眠状态,指定的时间后自动唤醒。在某些情况下,开发者可能会对 thread.sleep() 使用期间锁的归属产生疑问。
我们以一个代码示例为例进行说明:
class Run implements Runnable{ @Override public void run() { try { System.out.println(Thread.currentThread().getName() + " begin..."); Thread.sleep(1000*20); // 线程握住的锁是谁?是 run 这个对象?还是谁? System.out.println(Thread.currentThread().getName() + " over..."); } catch (InterruptedException e) { e.printStackTrace(); } } } public class TestThread { public static void main(String[] args) { Run run = new Run(); new Thread(run).start(); new Thread(run).start(); } }
在这个代码示例中,run 类实现了 runnable 接口,并重写了 run 方法。其中,thread.sleep() 方法被用来让当前线程休眠 20 秒。
问题:
在代码示例中,thread.sleep() 调用期间,线程握住的锁是谁?
答案:
代码示例中并没有对任何对象或资源进行加锁,因此当前线程没有持有任何锁。thread.sleep() 方法本身不会获取锁,它只是让当前线程进入休眠状态,直到指定时间结束后才唤醒。
以上就是Java 多线程中 Thread.sleep() 方法调用期间,线程握住的锁是谁?的详细内容,更多请关注其它相关文章!