感覺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
最贊回答 / sixGod
static修飾的變量是放在方法區中的,JVM不會回收方法區中的對象,由于hashMap不會被回收,而hashMap中又一直在用著MythreadLocal對象,所以導致MythreadLocal不會被回收
2022-10-23
這里貌似講錯了,obtainLockwhile循環是其它線程釋放鎖之后它被喚醒,然后再次判斷是否需要執行wait,并不是一直在這里while循環
2022-09-16
如果使用 synchronize 確實可以解決數據一致性問題 但是會影響性能 如果并發訪問量過高 造成排隊操作,甚至程序掛掉
使用ThreadLocal既可以解決數據一致性問題,還可以保證效率,因為ThreadLocal線程是單獨的,唯一需要考慮的只是如何從多個ThreadLocal中收集數據
使用ThreadLocal既可以解決數據一致性問題,還可以保證效率,因為ThreadLocal線程是單獨的,唯一需要考慮的只是如何從多個ThreadLocal中收集數據
2022-06-17