登录
首页 >  文章 >  java教程

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

时间:2024-10-31 19:27:58 481浏览 收藏

大家好,我们又见面了啊~本文《Java 多线程中 Thread.sleep() 方法调用期间,线程握住的锁是谁?》的内容中将会涉及到等等。如果你正在学习文章相关知识,欢迎关注我,以后会给大家带来更多文章相关文章,希望我们能一起进步!下面就开始本文的正式内容~

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() 方法调用期间,线程握住的锁是谁?》的内容介绍就到此结束,如果有什么疑问或者建议,可以在golang学习网公众号下多多回复交流;文中若有不正之处,也希望回复留言以告知!

相关阅读
更多>
最新阅读
更多>
课程推荐
更多>