感觉quartz这个例子没讲到点子上啊,其实是因为如果不加对自身thread的判断,下面wait就可能造成死锁,即自己拿着锁还wait锁的所有者来notify,类似于实现ReentrantLock可重入锁的机制
2024-01-26
单独多次执行 /stat 方法; 返回值也会产生变化.
set.stream().map(x -> x.getV()).reduce((sum, x) -> sum + x);
是不是因为这段代码里面的 x.getV() 方法改变了返回值
set.stream().map(x -> x.getV()).reduce((sum, x) -> sum + x);
是不是因为这段代码里面的 x.getV() 方法改变了返回值
2023-06-25
这里貌似讲错了,obtainLockwhile循环是其它线程释放锁之后它被唤醒,然后再次判断是否需要执行wait,并不是一直在这里while循环
2022-09-16
如果使用 synchronize 确实可以解决数据一致性问题 但是会影响性能 如果并发访问量过高 造成排队操作,甚至程序挂掉
使用ThreadLocal既可以解决数据一致性问题,还可以保证效率,因为ThreadLocal线程是单独的,唯一需要考虑的只是如何从多个ThreadLocal中收集数据
使用ThreadLocal既可以解决数据一致性问题,还可以保证效率,因为ThreadLocal线程是单独的,唯一需要考虑的只是如何从多个ThreadLocal中收集数据
2022-06-17