带示例的Java线程类静态布尔值holdLock(Object o)方法

线程类静态布尔值holdLock(Object o)

  • 包java.lang.Thread.holdLock(Object obj)中提供了此方法。

  • 此方法用于将当前线程锁定在方法中给定的指定对象上。

  • 此方法是静态的,因此我们也可以使用类名访问此方法。

  • 此方法的返回类型为boolean,因此如果返回true表示该方法中要锁定在给定对象上的当前线程,则返回true或false,否则返回false。

  • 如果对象为null,则此方法引发异常。

语法:

    static boolean holdLock(Object o){
    }

参数:

我们仅在Thread方法中将一个对象作为参数传递,即Object obj,以便在其上测试锁所有权的obj。

返回值:

此方法的返回类型为Boolean,如果此线程在方法中给定对象上的监视器锁定,则返回true,否则返回false。

Java程序演示holdLock()方法示例

/*  We will use Thread class methods so we are importing 
    the package but it is not mandate because 
    it is imported by default
*/

import java.lang.Thread;

class HoldLock extends Thread {

    static Thread t1;

    //覆盖run()Thread类
    public void run() {

        //我们将显示当前线程的名称
        System.out.println("The name of the Current thread is: " + Thread.currentThread().getName());

        //此方法返回true 
        //指定对象上的锁

        //这里我们没有在同步块中锁定对象t1-  
        System.out.println("Is thread t1 holds lock here? " + Thread.holdsLock(t1));

        //这里我们将对象t1锁定在同步块中  
        synchronized(t1) {
            System.out.println("Is thread t1 holds lock here? " + Thread.holdsLock(t1));
        }
    }

    public static void main(String[] args) {
        //创建HoldLock类的对象
        HoldLock lock = new HoldLock();

        //创建线程对象t1- 
        t1 = new Thread(lock);

        //调用start()方式
        t1.start();
    }
}

输出结果

E:\Programs>javac HoldLock.java

E:\Programs>java HoldLock
The name of the Current thread is: Thread-1
Is thread t1 holds lock here ? false
Is thread t1 holds lock? true
猜你喜欢