数据库
文章平均质量分 59
无
自由与自然
这个作者很懒,什么都没留下…
展开
-
生产者与消费者的几种解决方式
以上每种方式都有其适用场景,选择哪一种取决于具体的需求和设计考量。例如,BlockingQueue提供了更简洁的API,并且能够处理多种不同的并发场景,而使用wait()这是最基础的方式,通过synchronized关键字锁定资源,并使用对象的wait()和notify()方法来控制线程的等待与通知。Java中的java.util.concurrent包提供了BlockingQueue接口,它简化了生产者与消费者的实现。信号量(Semaphore)可以用来控制对资源的访问。原创 2024-07-17 11:19:44 · 163 阅读 · 0 评论 -
数据库发生死锁常见的场景
例如,事务A先锁定资源X,再锁定资源Y;如果另一个事务需要内部事务锁定的资源,但又被另一个需要外部事务资源的事务阻塞,就可能形成死锁。如果事务执行时间过长,它可能会锁定某些资源较长时间,导致其他等待这些资源的事务被阻塞。多个事务同时尝试更新同一记录,其中一个事务可能先锁定记录,随后其他事务试图锁定同一记录,导致等待和潜在的死锁。如果表中缺乏适当的索引,事务可能需要执行全表扫描,这可能导致表级锁,增加死锁的可能性。当事务间形成一个循环等待链,每个事务都在等待另一个事务释放锁时,就会发生死锁。原创 2024-07-19 23:31:39 · 355 阅读 · 0 评论 -
Mysql数据库事务与锁的理解
一个事务是一组SQL语句的集合,这些语句要么全部成功,要么全部失败。事务确保了数据库操作的原子性、一致性、隔离性和持久性(ACID特性)。原创 2024-07-19 23:41:09 · 292 阅读 · 0 评论