new FairSync() : new NonfairSync();因此,假设线程t1在ConcurrentHashMap的一个分区上具有读锁,另外两个线程t2和t3分别在同一分区上等待读和写锁那么,一旦t1释放它的锁,哪个(t2或t3)将获得锁。
据我所知,如果公平设置为真,那么等待时间最长的将是那个人。但在concurrentHashMap的情况下,它是否设置为true?如果没有,我们可以肯定地说哪个线程会获得下一个锁?
MySQL InnoDB表是否等待写锁,甚至等待查询(如SELECT COUNT(*) FROM t )我有50000行的表,有很多更新(每一行都有视图)。InnoDB应该在更新的行上设置一个写锁。但是,当我在这个表上只使用COUNT(*)进行查询时,即使不用等待写锁,MySQL也可以回答这个查询,因为没有UPDATE会更改行数。
非常感谢!
我读过一些关于锁(共享的、独占的)和每个隔离级别的锁持续多长时间的文章,但我仍然不完全理解……现在我不能向你展示详细的日志,但它看起来或多或少是这样的(我很可能在某个地方错过了Lock:deadlock等):(timeout for second query(5) Deadlock graph
如果我很好地理解锁,在(1)中,第一个查询获取一个