「java卖」JAVA卖股票
今天给各位分享java卖的知识,其中也会对JAVA卖股票进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
- 1、java中,用static 变量,实现卖火车票,假如有三个窗口,每个窗口都在卖一辆火车的票, 买的票不能重复!
- 2、北京哪里有JAVA自行车的的专卖店?
- 3、用java实现卖电影票的程序,实现5个窗口同时售卖100张票.(用数组保存)
- 4、Java中卖票问题
- 5、Java如何解决超卖
java中,用static 变量,实现卖火车票,假如有三个窗口,每个窗口都在卖一辆火车的票, 买的票不能重复!
public class SaleTicket extends Thread{
static int mark=0;
static int ticket[]=new int [100];
int SaleTicketNo;
SaleTicket(int num){
SaleTicketNo=num;
}
public void run() {
// compute primes larger than minPrime
for(int i=0;i100;i++)
{
if(ticket[i]==0){
ticket[i]=1;
mark=mark+1;
System.out.println("售票机编号:"+SaleTicketNo+" 票号:"+i+" 张次:"+mark);
}
}
}
}
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
SaleTicket sale1=new SaleTicket(101);
SaleTicket sale2=new SaleTicket(102);
SaleTicket sale3=new SaleTicket(103);
SaleTicket sale4=new SaleTicket(104);
SaleTicket sale5=new SaleTicket(105);
sale1.start();
sale2.start();
sale3.start();
sale4.start();
sale5.start();
}
}
不考虑死锁问题
北京哪里有JAVA自行车的的专卖店?
海淀西三旗有一家JAVA专卖,西三旗桥东500米路北JAVA(佳沃)自行车北京分公司 北京市昌平区昌盛园三区5号楼1层104号
用java实现卖电影票的程序,实现5个窗口同时售卖100张票.(用数组保存)
public class Yugi implements Runnable
{
@Override
public void run()
{
String name = Thread.currentThread().getName();
while(name.startsWith("窗口"))
{
if(tickets.length == 0)
{
stop();
break;
}
int num = (int) (Math.random() * tickets.length) + 1;
tickets = new int[tickets.length - num];
System.out.println(name + " 售出了 " + num + " 张票");
try
{
Thread.sleep(500);
}
catch(InterruptedException e)
{}
}
}
public synchronized void start()
{
for(int i = 0; i ts.length; i++)
{
Thread thread = ts[i];
if(thread == null)
{
thread = new Thread(this);
thread.setPriority(Thread.MIN_PRIORITY);
thread.setName("窗口" + (i + 1));
thread.start();
}
}
}
public synchronized void stop()
{
for(int i = 0; i ts.length; i++)
{
Thread thread = ts[i];
if(thread != null)
{
thread.interrupt();
}
thread = null;
}
notifyAll();
}
static int[] tickets = new int[100];
private static int WIN = 5;
Thread[] ts = new Thread[WIN];
public static void main(String[] args)
{
new Yugi().start();
}
}
Java中卖票问题
Thread-0线程正在卖第100张票
Thread-1线程正在卖第100张票
Thread-1线程正在卖第98张票
Thread-1线程正在卖第97张票
Thread-1线程正在卖第96张票
Thread-1线程正在卖第95张票
Thread-1线程正在卖第94张票
Thread-1线程正在卖第93张票
Thread-0线程正在卖第99张票
看清楚就知道:首先:0和1都拿到了第100张,0打印出来了,--了,然后0就拿了第99张,之后0就挂起了,然后1打印出来了,--了,然后1就拿了第98张,到后面0就把上次拿到的99打印出来
你new出来的两个线程都有独立的内存空间,你那个静态的tickets变量,每个线程用都会先从A类那个内存空间那里拿过来放到各自的空间里。
如果加上一个锁块就不同了,它保证每次只有一个线程在拿tickets,每次只有一个线程在--;
Java如何解决超卖
一、人数阀门设计:进行用户人群过滤。
商品数量只有100份,秒杀人数有10000人,那么我们就设计1道阀门(根据情况,可以设计3道或者2道都可以的)。
在整点的时候,我们对点击了“购买”按钮后,我们只运行500人进入信息填写页面,信息填写完成后提交订单。效果如下:
①商品详情点击购买(秒杀)--》②输入信息提交订单--》③进行支付
10000人 500人 (这里也可以设计阀门,只允许多少人进入支付)
其他未进入的如何处理乃?显示已抢完或者排队等待(这就是后面要提到的排队系统设计)。
二、会员排队设计:对用户进行排队,排在前面的先购买
这相当于是消息队列模式了,如果秒杀是立即知道结果,排队可能会有点鸡肋。
在第二步②输入信息提交订单后进行排队,排在前面的先购买,排在后面的后购买
三、问答问题设计:过滤掉一些反应慢的用户
在第一步①点击购买后跳转到问题页面,用户必须回答正确问题后,方可进入后面的流程
四、库存缓存设计:缓存库存,判断用户购买的商品是否还有,不读取数据库,速度快,也不会增加数据库负担,
经过前面的过滤,超卖的可能性比较低了提前将商品库存缓存起来,到下单购买的时候,用户购买了就减1,每次都通过库存缓存判断一下,如果为0就显示已抢完。
五、页面静态设计:尽量静态缓存化【CDN那些这里不做考虑】
第一步①商品详情页面,尽量进行缓存,减轻大批量用户在访问商品页面的时候,大量查询数据库。
问答问题页面:全静态,加载快,无数据库负担。
排队等待页面:全静态,加载快,无数据库负担。
排队结束页面:全静态,加载快,无数据库负担。
关于java卖和JAVA卖股票的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
发布于:2022-11-29,除非注明,否则均为
原创文章,转载请注明出处。