「库存同步java」库存同步期间如何避免超卖
本篇文章给大家谈谈库存同步java,以及库存同步期间如何避免超卖对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
javaweb入库出库后,库存如何同步变化
第一次同步全量同步,后面的所有同步增量同步。
全量同步指一次性同步所有的库存;增量同步指在之前一次同步的基础之上修改库存才可以同步。
java多线程synchronized同步的问题
首先我确认一下你的需求,你实际上是想做这件事
有4个线程,两个负责售货,两个负责进货,其中售货速度3进货速度1,默认当前库存为100,然后4个线程启动,在你的期望中库存只要大于2,就可以出货,库存小于200就要进货
下面是我对上面的需求做的一点小修改,不知道符合你的要求么?
jinhuo.java
class jinhuo {
private huowu h;
boolean flag = true;
public void jin(huowu h) {
this.h = h;
}
public void show() {
while (flag) {
synchronized(h){
if (h.com 200){
shixian();
}
}
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public void shixian() {
h.com++;
System.out.println(Thread
.currentThread()
.toString() + "-------补货完成,当前库存剩余" + h.com);
}
}
shouhuo.java
class shouhuo {
private huowu h;
boolean flag = true;
public void jin(huowu h) {
this.h = h;
}
public void show() {
while (flag) {
synchronized (h) {
if (h.com 2){
shixian();
}
}
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public void shixian() {
h.com = h.com - 3;
System.out.println(Thread
.currentThread()
.toString() + "-------售货完成,当前库存剩余" + h.com);
}
}
其余代码不变
部分打印结果,这个临界值部分
Thread[Thread-1,5,main]-------售货完成,当前库存剩余3
Thread[Thread-0,5,main]-------售货完成,当前库存剩余0
Thread[Thread-2,5,main]-------补货完成,当前库存剩余1
Thread[Thread-3,5,main]-------补货完成,当前库存剩余2
Thread[Thread-3,5,main]-------补货完成,当前库存剩余3
Thread[Thread-2,5,main]-------补货完成,当前库存剩余4
Thread[Thread-0,5,main]-------售货完成,当前库存剩余1
Thread[Thread-2,5,main]-------补货完成,当前库存剩余2
Thread[Thread-3,5,main]-------补货完成,当前库存剩余3
=============================================================
至于你代码中的问题
终止循环的flag是不必要的,不要终止线程会使你的这个需求看上去更加的合理
我加了点线程的阻塞时间,以免执行太快无法很好的展现结果
同步标志你原来是加在方法上了,我改在了对象上
既然是面向对象的编程,为什么传入线程的是对象的某个属性而不是对象本身呢..
java J2EE 如何实现库存上下线报警机制?请详细说明 谢谢
如果你的产品的种类不是上百万的话,可以非常简单的实现。
每次在你更新库存的时候,数据库锁行,即一种商品(不是锁表哦)。更新前取下实时库存,然后加减你的更新值,看是否超上下限。
超了就不更新(根据你的业务),然后返回一个标记位flag到服务端(比如0是正常,1是超上限,-1超下限制)。服务端维护一个同步的map,存放mapproductid,flag;根据之前返回的标记位,去主动发送消息。也按照每个登录系统的人的session可以做轮询来通知用户。
只要注意2点:1.锁行和更新库存确保一个事务。2.服务端维护的map必须做写入的同步
库存同步java的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于库存同步期间如何避免超卖、库存同步java的信息别忘了在本站进行查找喔。
发布于:2022-11-24,除非注明,否则均为
原创文章,转载请注明出处。