为什么呢?
下面是我机器上的执行结果
Thread-0执行get(int i)
Thread-0执行get(int i)
Thread-1执行get(int i)
Thread-0正在执行reset()
Thread-0reset()执行完毕
Thread-1执行get(int i)
Thread-1执行get(int i)
Thread-1执行get(int i)
Thread-1执行get(int i)
Thread-1执行get(int i)
Thread-1正在执行reset()
Thread-1reset()执行完毕
Thread-1执行get(int i)
Thread-0执行get(int i)
Thread-0执行get(int i)
Thread-0执行get(int i)
Thread-0执行get(int i)
Thread-0执行get(int i)
Thread-0执行get(int i)
Thread-0执行get(int i)
Thread-0执行get(int i)
Thread-0执行get(int i)
Thread-0执行get(int i)
Thread-0执行get(int i)
Thread-0执行get(int i)
Thread-0执行get(int i)
Thread-0执行get(int i)
Thread-0执行get(int i)
Thread-0执行get(int i)
Thread-0执行get(int i)
Thread-1执行get(int i)
Thread-1执行get(int i)
Thread-1执行get(int i)
Thread-1正在执行reset()
Thread-1reset()执行完毕
Thread-1执行get(int i)
Thread-1执行get(int i)
Thread-1执行get(int i)
Thread-1执行get(int i)
Thread-1执行get(int i)
Thread-1执行get(int i)
Thread-1执行get(int i)
Thread-1执行get(int i)
分析一下上面的结果:
Thread-1正在执行reset()
Thread-1reset()执行完毕
之间没有任何的get(int i)操作,可是在reset()方法中,线程要sleep(5000),这么长的时间,其他的线程都没有执行get(int i)操作,这不是你的要求吗?
你也可以把sleep的时间设置成更长的时间,在reset方法执行完之前,其他的线程是不能get方法的