背景 多个租户(一个租户一个数据库)执行相同的业务操作,该操作涉及到读库和写库。首先拿到了4000个租户,为了执行提高执行效率,使用线程池。实际生产中每个租户有一堆任务,比如:每个租户有2000个任务,假设池子里面有100个线程 那么最极端的场景一个数据库同时有100个线程访问,加上其他业务可能就行这个数据库的链接数打满了。 解决 方案:线程池并发最高有5个线程在执行一个租户的任务,这时候锁就不合适了。信号量就隆重登场了