java 怎么判断对象被其他线程锁住

java 如何判断对象被其他线程锁住RT,不知道怎么判断?你想在运行时判断?[解决办法]应该和文件被占用差不多

java 如何判断对象被其他线程锁住
RT,不知道怎么判断? 你想在运行时判断?
[解决办法]
java 怎么判断对象被其他线程锁住
应该和文件被占用差不多吧!
你无法操作这个对象吧!

[解决办法]


import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import java.util.concurrent.ConcurrentHashMap;

public class ObjectLockJudgement {

    private static final ConcurrentHashMap<Object, Thread> relation = new ConcurrentHashMap<Object, Thread>();

    /**
     * @param args
     */
    public static void main(String[] args) {
        final int threadNumber = 100;

        List<Object> lockers = new ArrayList<Object>(threadNumber);
        for (int i = 0; i < threadNumber; i++) {
            final Object locker = new Object();
            lockers.add(locker);
            new ThreadImpl(locker);
        }

        while (!relation.isEmpty()) {
            for (final Object locker : lockers) {
                final Thread t = relation.get(locker);
                if (t != null)
                    System.out.println("the locker Object:" + locker.hashCode()


                            + " is held by thread:" + t.getName());
            }
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }

    static class ThreadImpl extends Thread {
        private Object locker;
        private static final Random r = new Random();

        public ThreadImpl(Object locker) {
            this.locker = locker;
            this.start();
        }

        @Override
        public void run() {
            try {
                synchronized (locker) {
                    relation.put(locker, Thread.currentThread());
                    try {
                        Thread.sleep(r.nextInt(10000));
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }


            } finally {
                relation.remove(locker);
            }
        }
    }

}


以上代码是将locker和thread做关联,可以得到object 锁对应的thread。
但是我不知道判断的目的是什么,因为ReentrantLock的try locker,可以应该大的你相同的目的,而且不需要判断。