KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > mchange > v2 > lang > ThreadUtils


1 /*
2  * Distributed as part of c3p0 v.0.9.1
3  *
4  * Copyright (C) 2005 Machinery For Change, Inc.
5  *
6  * Author: Steve Waldman <swaldman@mchange.com>
7  *
8  * This library is free software; you can redistribute it and/or modify
9  * it under the terms of the GNU Lesser General Public License version 2.1, as
10  * published by the Free Software Foundation.
11  *
12  * This software is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15  * GNU Lesser General Public License for more details.
16  *
17  * You should have received a copy of the GNU Lesser General Public License
18  * along with this software; see the file LICENSE. If not, write to the
19  * Free Software Foundation, Inc., 59 Temple Place, Suite 330,
20  * Boston, MA 02111-1307, USA.
21  */

22
23
24 package com.mchange.v2.lang;
25
26 import com.mchange.v2.log.*;
27 import java.lang.reflect.Method JavaDoc;
28
29 public final class ThreadUtils
30 {
31     private final static MLogger logger = MLog.getLogger( ThreadUtils.class );
32
33     final static Method JavaDoc holdsLock;
34
35     static
36     {
37     Method JavaDoc _holdsLock;
38     try
39         { _holdsLock = Thread JavaDoc.class.getMethod("holdsLock", new Class JavaDoc[] { Object JavaDoc.class }); }
40     catch (NoSuchMethodException JavaDoc e)
41         { _holdsLock = null; }
42
43     holdsLock = _holdsLock;
44     }
45
46     public static void enumerateAll( Thread JavaDoc[] threads )
47     { ThreadGroupUtils.rootThreadGroup().enumerate( threads ); }
48
49     /**
50      * @returns null if cannot be determined, otherwise true or false
51      */

52     public static Boolean JavaDoc reflectiveHoldsLock( Object JavaDoc o )
53     {
54     try
55         {
56         if (holdsLock == null)
57             return null;
58         else
59             return (Boolean JavaDoc) holdsLock.invoke( null, new Object JavaDoc[] { o } );
60         }
61     catch (Exception JavaDoc e)
62         {
63         if ( logger.isLoggable( MLevel.FINER ) )
64             logger.log( MLevel.FINER, "An Exception occurred while trying to call Thread.holdsLock( ... ) reflectively.", e);
65         return null;
66         }
67     }
68
69     private ThreadUtils()
70     {}
71 }
72
Popular Tags