java线程优化问题
我有两个产品A和B,现有a1,a2,b1,b2四个订单,要求订单分别加减对应的产品的库存数,并且产品之间互不影响。也就是a1在+A的库存同时,b2可以减B的库存而不影响A...
我有两个产品A和B,现有a1,a2,b1,b2四个订单,要求订单分别加减对应的产品的库存数,并且产品之间互不影响。也就是a1在+A的库存同时,b2可以减B的库存而不影响A。求思路~
展开
展开全部
a1,a2,b1,b2对应的库不一样,天然不影响。
你这边最应该考虑的是对单个产品进行线程的时候,需要线程安全。
推荐一个关键字:
synchronized 关键字,代表这个方法加锁,相当于不管哪一个线程(例如线程A),运行到这个方法时,都要检查有没有其它线程B(或者C、 D等)正在用这个方法(或者该类的其他同步方法),有的话要等正在使用synchronized方法的线程B(或者C 、D)运行完这个方法后再运行此线程A,没有的话,锁定调用者,然后直接运行。它包括两种用法:synchronized 方法和 synchronized 块。
你这边最应该考虑的是对单个产品进行线程的时候,需要线程安全。
推荐一个关键字:
synchronized 关键字,代表这个方法加锁,相当于不管哪一个线程(例如线程A),运行到这个方法时,都要检查有没有其它线程B(或者C、 D等)正在用这个方法(或者该类的其他同步方法),有的话要等正在使用synchronized方法的线程B(或者C 、D)运行完这个方法后再运行此线程A,没有的话,锁定调用者,然后直接运行。它包括两种用法:synchronized 方法和 synchronized 块。
展开全部
最简单的就是多线程陪线程锁
针对你这个其实可以让A和B各自持一条线程并针对A,B写出各自的增减方法让a1,a2,b1,b2选择方法之前判断走那个线程.其实我没看出来A和B为啥会相互影响在建表之初就应该是俩独立的
针对你这个其实可以让A和B各自持一条线程并针对A,B写出各自的增减方法让a1,a2,b1,b2选择方法之前判断走那个线程.其实我没看出来A和B为啥会相互影响在建表之初就应该是俩独立的
追问
A和B产品是同一张表,我觉得不同的商品都要同步,整个增减方法都锁住,这个有点傻,所以想要分开来。
追答
哦~ 如果不存在并发需求就不用锁只需要多线程加事物保证增减失败数据回滚就好,
如果需要那还是把A商品和B商品的增删方法单独写出来,加线程加锁,这样逻辑上A,B就算两张表了.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询