Integer 在多线程下使用ReentrantLock加锁后安全吗?
经过测试时不安全的,因为超过-128到127缓存的数据都会涉及到装箱操作,这个时候每个线程来都会new Integer(XX)。从而导致拿到的都不是同一把锁无法形成互斥锁。

  Integer ticketNum = 10;

    @Override
    public void run() {

        final ReentrantLock reentrantLock = new ReentrantLock();

        while (true) {
            try {
                reentrantLock.lock();
                if (ticketNum <= 0) {
                    break;
                } else {
                    System.out.println(Thread.currentThread().getName() + "->,抢到了:" + ticketNum-- +",锁" + reentrantLock);
                }
            } catch (Exception e) {

            }finally {
                reentrantLock.unlock();
            }



        }