当前位置: 首页 > 图灵资讯 > 技术篇> Java 多线程中 Thread.sleep() 方法调用期间,线程握住的锁是谁?

Java 多线程中 Thread.sleep() 方法调用期间,线程握住的锁是谁?

来源:图灵教育
时间:2024-10-31 15:39:13

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 秒。

立即学习“Java免费学习笔记(深入)”;

问题:

在代码示例中,thread.sleep() 调用期间,线程握住的锁是谁?

答案:

代码示例中并没有对任何对象或资源进行加锁,因此当前线程没有持有任何锁。thread.sleep() 方法本身不会获取锁,它只是让当前线程进入休眠状态,直到指定时间结束后才唤醒。

以上就是Java 多线程中 Thread.sleep() 方法调用期间,线程握住的锁是谁?的详细内容,更多请关注图灵教育其它相关文章!