1.可使用redis,将商品剩余数量放进redis,如果多人同时请求,可以加synchronized 关键字,使用同步锁来保证同步性(该操作仅限于单机环境,如果是集群,则不可使用,需要使用分布式锁);
2.在集群环境下synchronized会失效,为什么会失效?这里的锁是用于同一进程里面,因为多个线程共同访问某个共享资源,而进行的同步措施,他的前提条件是同一进程内,内存共享;分布式服务里面,多个服务属于不同进程,用普通的同步锁会失效,因为不同进程里面,就没有什么内存共享之类的说法,要采用分布式锁,常见的分布式锁有:
redis的setnx方法,如果键不存在则塞入,如果存在则返回0;
zookeeper临时节点方式;
数据库锁;