「java卖」JAVA卖股票

博主:adminadmin 2022-11-29 05:30:09 58

今天给各位分享java卖的知识,其中也会对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卖股票的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

The End

发布于:2022-11-29,除非注明,否则均为首码项目网原创文章,转载请注明出处。