当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Java ReentrantLock toString()用法及代码示例


ReentrantLock 类的 toString() 方法返回一个字符串来标识这个锁和它的锁状态。

用法

public String toString()

参数

没有传递参数。

返回

标识此锁及其锁状态的字符串

抛出

不会抛出异常。

例子1

import java.util.concurrent.ExecutorService; 
 import java.util.concurrent.Executors; 
 import java.util.concurrent.locks.ReentrantLock; 
   
 class ToStringClass implements Runnable 
 { 
   String nm; 
   ReentrantLock relc; 
   public ToStringClass(ReentrantLock rl, String n) 
   { 
     relc = rl; 
     nm = n; 
   } 
   public void run() 
   { 
     boolean dn = false; 
     while (!dn) 
     { 
       try {
    	   int c=0;
       if(relc.tryLock()) 
       { 
			int i;
			Thread t1=new Thread();
			for( i =5 ; i <= 10 ; i++)
				System.out.println(t1.getName());
				 t1.checkAccess();
			t1.countStackFrames();
			c=c+1;
			if(i>7)
			{
		System.out.println(t1.getName());
			break;
				
      }
		
      
      }
      } 
		     finally
		     { 
		       //Outer lock release 
		       System.out.println("task name - " + nm + 
		                  " releasing lock(outer lock)"); 
  
		       relc.unlock(); 
		       System.out.println("Lock Hold Count - " + 
		                    relc.getHoldCount()); 
		     } 
		   } 	   
    } 
  } 

   
 public class ReentrantLoctoStringExample1
 { 
   static final int MAX_Time = 2; 
   public static void main(String[] args) 
   { 
     ReentrantLock rel = new ReentrantLock(); 
     ExecutorService pool = Executors.newFixedThreadPool(MAX_Time); 
     Runnable wrk1 = new ToStringClass(rel, "Job1"); 
     System.out.println("  " +wrk1.toString());     
     pool.execute(wrk1); 
     System.out.println("  " +pool.toString());
     pool.shutdown(); 
   } 
 }

输出:

[email protected]
Thread-0
Thread-0
Thread-0
Thread-0
Thread-0
Thread-0
  [email protected][Running, pool size = 1, 
  active threads = 1, queued tasks = 0, completed tasks = 0]
Thread-0
task name - Job1 releasing lock(outer lock)
Lock Hold Count - 0

例子2

import java.util.concurrent.locks.ReentrantLock;
 
 public class ReentrantLoctoStringExample2  {
     public static void main(String[] args) {
  
            ReentrantLock lock=new ReentrantLock();
            System.out.println("  " +lock.toString());
            ToStringClass2 myRnbl=new ToStringClass2(lock);
            System.out.println("  " +myRnbl.toString());
            new Thread(myRnbl,"Thread-1").start();
                        
     }
 }
    
 class ToStringClass2 implements Runnable{
     
     ReentrantLock lock;
     public ToStringClass2(ReentrantLock lock) { 
            this.lock=lock;
     }
     
     public void run(){
            
            System.out.println(Thread.currentThread().getName()
                         +" is Waiting to get the lock");
            
            try {
            	
                	int i=1;
                	Thread t=new Thread();
                  while(i<5) {
                	  
                	  System.out.println("     "+t.getThreadGroup());
                	  if(i==2)
                    System.out.println("     "+t.getThreadGroup());
                	  if(i==3)
                    System.out.println("     "+t.isInterrupted());
                	  if(i==4)
                    System.out.println("     "+t.getStackTrace());
                	  
                	  i=i+1;
                  }
                	  
                 
          
                  assert !lock.isHeldByCurrentThread();
                  lock.lock();
                            
                  System.out.println(" after sleep(1500) Is held by Current Thread - " + lock.isHeldByCurrentThread()); 
                 
                } 
                 
                finally {
                	lock.unlock();
                }       
     }
 }

输出:

[email protected][Unlocked]
  [email protected]
Thread-1 is Waiting to get the lock
     java.lang.ThreadGroup[name=main,maxpri=10]
     java.lang.ThreadGroup[name=main,maxpri=10]
     java.lang.ThreadGroup[name=main,maxpri=10]
     java.lang.ThreadGroup[name=main,maxpri=10]
     false
     java.lang.ThreadGroup[name=main,maxpri=10]
     [Ljava.lang.StackTraceElement;@12a128ac
 after sleep(1500) Is held by Current Thread - true




相关用法


注:本文由纯净天空筛选整理自 Java ReentrantLock toString() Method。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。