购票或者报名中的只有最后一个名额,但是有很多人抢,该怎么写代码

购票系统中只有最后一个名额,但是有很多人抢,当第一个人买成功后,其他人不能再买,听说是用单线程解决,具体该怎么办,谁能给我一个例子啊?拜托

0

3个回答

写了一个小Demo,get方法加了一个synchronized关键字,你可以试试不加关键字的输出与加了有什么区别,我觉得就可以解决这个问题,使用锁也是可以的,或者volatile关键字去修饰j变量,也可以试试看,都能保证多线程访问同一数据的安全性

public class TestQu {
public static int j = 1;
public static void main(String[] args) {

    Thread t1 = new Thread(){
        public void run() {
            System.out.println("a线程开始运行");
            int b = TestQu.get();
            System.out.println("a读取数据完成,读到为=" + b);
        };
    };


    Thread t2 = new Thread(){
        public void run() {
            System.out.println("b线程开始运行");
            int b = TestQu.get();
            System.out.println("b读取数据完成,读到为=" + b);
        };
    };
    t1.setName("a线程");
    t2.setName("b线程");

    t1.start();
    t2.start();

}

public synchronized static int get(){
    try {
        for(int i =0;i < 3;i++){
            System.out.println(Thread.currentThread().getName() + "正在读取....." + i + "次");
            Thread.sleep(1000);
        }

    } catch (InterruptedException e) {
    }
    j -= 1;
    return j;
}

}

1

多线程用于多个客户端,线程也有先后顺序,这里就需要用到死锁了(java)里面,当这个线程执行结束后才允许下一个线程进来执行。

0

我直接使用了关键字synchronized ,让查询余票和增加的方法都放在这里面,就能解决这个问题了,谢谢你的提醒

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
面试:第四章:项目介绍
哪些情况用到activeMq? 商品上架后更新ES索引库、更新静态页、发送短信 提交订单后清除购物车中的数据 支付未完成时支付完成后修改订单状态 秒杀的时候,只有最后一件物品,该怎么去抢或者分配? 秒杀商品的库存都会放到redis缓存中,在客户下单时就减库存,我们设置库存库存闸值,用于某些商品数量非单件不可分割,减完库存会判断库存是否为大于库存闸值,如果小于,表示库存不足,刚才减去的数量...
java实现万人抢一张火车票
一万人,同时抢一张火车票 public class TicketMain { //拿到火车票的线程名 public static String getTicketThread; //拿到火车票的线程数 public static volatile AtomicInteger getTicketThreadNum = new AtomicInteger(0); //火车票数 pub...
这是一个秒杀系统,即大量用户抢有限的商品,先到先得 用户并发访问流量非常大,需要分布式的机器集群处理请求 系统实现使用Java
1、用户请求分发模块:使用Nginx或Apache将用户的请求分发到不同的机器上。 2、用户请求预处理模块:判断商品是不是还有剩余来决定是不是要处理该请求。 3、用户请求处理模块:把通过预处理的请求封装成事务提交给数据库,并返回是否成功。 4、数据库接口模块:该模块是数据库的唯一接口,负责与数据库交互,提供RPC接口供查询是否秒杀结束、剩余数量等信息。 第一部分就不多说了,配置HTTP服务
PHP 高并发、抢票、秒杀 解决方案
对于抢票、秒杀这种业务,我说说自己对这种高并发的理解吧,这里提出个人认为比较可行的几个方案: 方案一:使用队列来实现 可以基于例如MemcacheQ等这样的消息队列,具体的实现方案这么表述吧 比 如有100张票可供用户抢,那么就可以把这100张票放到缓存中,读写时不要加锁。 当并发量大的时候,可能有500人左右抢票成功,这样对于500后面的请求可以直接转到活动结束的静态页面。进去的500个人
Java多线程售票问题
1、代码 public class Test { public static void main(String[] args) { Tickets tickets = new Tickets(10); new Thread(tickets, "售票员A").start(); new Thread(tickets, "售票员B").start(); new Thread(
抢购的实现方式
电商的秒杀和抢购,对我们来说,都不是一个陌生的东西。然而,从技术的角度来说,这对于Web系统是一个巨大的考验。当一个Web系统,在一秒钟内收到数以万计甚至更多请求时,系统的优化和稳定至关重要。这次我们会关注秒杀和抢购的技术实现和优化,同时,从技术层面揭开,为什么我们总是不容易抢到火车票的原因?  一、大规模并发带来的挑战  在过去的工作中,我曾经面对过5w每秒的高并发秒杀功能,
手把手教你写一个抢讲座的脚本
利用js脚本来帮你抢到一个表单提交类型的各种活动,这里以讲座为例~准备注册一个麦克表单创建一个自己的表单数据探索首先自己提交一个表单,同时打开f12中的network,看一看自己提交的东西包含了什么。比如这里我们发现了d这个对象之后我们尝试着按照它这种格式,自己提交一下,看看能不能成功。这里我选用了restlet这个工具。可以发现,成功了o(* ̄▽ ̄*)o分析我们来仔细研究下这个表单中提交的这个数...
Splinter基本用法+零基础的双鸭山抢课脚本
前言之前一直想写个抢课脚本,但是欧皇加身,选的都中,但今年好运气到了头,报道注册那天,看见心仪的课有三个名额,但是,因为学校教务处还没开始办理注册,眼睁睁的看着3个名额飞走,后面几天,150个满名额雷打不动的占着,故花一天学习了Python的Splinter库实现了抢课脚本,教程推荐官网资料PS:环境:Python36+Splinter0.77+chromedriver(调用google的exe程序
Java线程模拟网络购票
假设有三个买票窗口,总共有20张票,这种情况下就应该用三个线程去模拟三个窗口的卖票过程,代码如下:package com.Demo5; public class Ticket implements Runnable{ private int num=20; //票数总数为20 private int i=1; //抢到票的次数 @Override pub...
淘宝与支付宝联手打造“每日必抢”,拼多多会输吗?
近日,一些网友的支付宝界面上悄然上线了“拼团”功能。不过调查显示,这个功能并未全部投放,但是初步预计有很大的灰度空间。 这个拼团功能在支付宝的菜单栏名为“每日必抢”,界面产品皆为热销产品,且均受到价格、时间的限定。每日必抢是一款支付宝小程序,隶属于淘宝有限公司。目前,在每日必抢中,除了首页,拼团排在了第一栏,接下来依次为购物车和订单。 ...
直播写代码,今晚8点见!
真声出镜,真人写代码,直播问答!
亲测,手把手教你用Python抢票
亲测,手把手教你用Python抢票 原创 2015-12-10 大数据文摘 大数据文摘 关于转载授权 大数据文摘作品,欢迎个人转发朋友圈,自媒体、媒体、机构转载务必申请授权,后台留言“机构名称+转载”,申请过授权的不必再次申请,只要按约定转载即可,但文末需放置大数据文摘二维码。 大数据文摘曾经推出多篇Python的文章,这里介绍3篇,点击文字即可阅读 (1)初
利用Tampermonkey写脚本抢课
利用Tampermonkey写脚本抢课学校抢课…实在抢不到,于是想到了利用脚本不断刷新页面,来捡漏子。 听了实验室大神的推荐,选用了tampermonkey插件来写脚本。 在谷歌应用商店搜索tampermonkey并安装 安装完后选择添加脚本 绑定执行脚本的页面 这里有个坑,关于要不要require jquery的问题。 如果绑定的页面中已引用jq了,就不要添加require jq了 如果没有,
一个高并发买票的实例
2.一个高并发买票的实例: 马克-to-win:我 们现在回到春节高并发买票的问题。我们假设有一百万个人买一百张票,其中买票程序一百万个线程同时运行。不用改变mysql的缺省事务隔离级别。任何人在 买之前都用普通的select * from table来访问数据库获得目前的票数。假如现在是一百,之后大家一起点“下单”钮。这个钮所对应的程序可以这样:先select * from table for ...
java多线程模拟抢票
public class Test {  public static void main(String[] args) throws InterruptedException {   int time = 50;   int num = 50;   int people = 100;   TestThread t1 = new TestThread();   Thread[] thre
暗访黄牛:“抢票软件”如何几分钟抢一车票的
软件下载地址
12306铁路购票系统设计的思考
1 今年春节期间铁路客流量据说有31亿 2 目前12306 pv是14亿,而高峰期就在8点到10点,那么也就是有可能在这两个小时里有5亿访问量,而每秒的并发量估计在最高峰时能达到几千万 3 目前Ngix能处理在线1万,但是实际值一般是8000左右 4 一台IBM大型机要几千万美元,估计加上DB2,交易中间件,得小1亿了 5 腾讯,淘宝等拥有总在线人数4亿规模或者事务处理达到亿级别的规模耗时
java语言基础(90)——多线程(同步代码块解决多线程售电影票时的负票问题)
多线程售电影票案例: package ThreadDemo; public class SellTicket implements Runnable{ private int ticket = 100; //同步代码块用的对象锁,多个线程共享一把锁才可以实现同步 private Object obj = new Object(); public void run(){ wh
java多线程之三种同步方法实现抢火车票
package com.homework; import java.util.concurrent.locks.ReentrantLock; class Ticket implements Runnable{ int count=3; ReentrantLock rt=new ReentrantLock(); //第三种方法,显示加锁,效率最高 Object obj=new Objec...
赶紧来传智播客报名吧~名额不多了
一直以来,传智播客成都java培训中心都是以学员的利益为重,踏踏实实的讲好技术,力争在技术方面让大家能够少走弯路。还在为找一个地方实实在在的教技术,找一个能真真正正的学到技术的地方发愁吗?与其观望,还不如到传智播客成都java培训中心来试听一下课程,在听课的同时还能够免费的拿到视频资料! 详情访问:http://cd.itcast.cn 成都传智播客java培训是2010年北京传智播客教育科技
购票模拟--多线程学习(一)
购票场景:多人在多个窗口购买N张票 多个窗口同时售票 public void run() { while(total&amp;gt;0){ sale(); } } public synchronized void sale() { if(total&amp;gt;0) { System.out.println(Thread.currentThread().getName()+&quot;卖了第...
用JS写个简单的抢课脚本
环境:火狐浏览器   插件:Greasemonkey 与 ReloadEvery 在插件配置好之后就可以进行操作。由于抢课系统已关闭,这里我就写一个小程序来模拟下 其中Greasemonkey是用于储存脚本,ReloadEvery是用于不断刷新运行脚本 我这里假设html代码为网页的代码,JS为我们所嵌入运行的代码 模拟抢课首页:index.html
1145: 统计字母个数
题目Description给定一段文章,请输出每个字母出现的次数Input只有一组输入数据,该数据大小<10KB。在文章中除最后一个字符外,只有小写字母、空格和换行符,没有另外的标点、数字和大写字母等。该文章以’#’结尾。Output输出格式为“C A”,C为’a’..’z’中的字母,A为出现次数,C和A之间空一格Sample Inputhere is the input this is the
报名系统在缴费情况下的人数控制
之前做一个报名系统 报名流程是 这样的 用户 填写信息后 提交表单后我会在数据库里面插入一条数据 里面有个状态值status我给的是0 然后 支付宝付款 成功 异步通知 成功了 我把这个0改成1   因为报名有人数控制,所以在每次用户提交数之前都判断报名成功的用户是否大于这个数量! 貌似一切都是没问题一样! 需要注意的是: 1 报名人数控制    我在判断人数的时候是按按照报名且缴
利用网站关键字监控工具 实现快速抢标抢单抢市场
这次的教程是教大家如何使用“网站关键字监控工具”监控网站的最新消息,然后实现发送邮件提醒!让你随时随地可以知道最新消息。! 首先来大概了解下网站关键字监控工具的界面!如下图: 现在开始准备监控的工作,为了方便,网站关键字监控工具中还是先设置好需要监控的关键字吧!在软件的“工具---关键字管理”。这样就如下图开始添加关...
用python编写程序抢火车票
随着春节返乡潮的临近,“黄牛党”又开始活跃起来。《法制日报》记者调查发现,一些网络“黄牛”仍通过社交平台招揽客户,有“黄牛”称抢票一张加收60元到150元不等作为佣金。此外,网上还有人兜售“抢票软件”。但是可以实现自己写代码抢火车票了
用 Python 代码自动抢火车票
市场上很多火车票抢票软件大家应该非常熟悉,但很少有人研究具体是怎么实现的,所以觉得很神秘,其实很简单。下面使用Python模拟抢票程序,给大家揭秘抢票到底是怎么回事。该代码仅供参考,主要用于大家沟通交流,禁止用于商业用途。具体代码如下,可以修改成自己的12306用户名账号:准备工具12306网站用户名和密码Pythonchrome浏览器及下载chromedriver下载Python代码,位于:ht
oc编程:电影院买票系统2-----代码实现
main.m文件 #import #import "Cinema.h" int main(int argc, const char * argv[]) { @autoreleasepool { Cinema *c = [[Cinema alloc] initWithName:@"万达影城"]; while (1)
shmget 共享内存 同步读写文件一个进程写,多个进程读,读和写同步,边写边读
首先,看看老大给我的任务:实现一个模块间的内存管理库, 实现以下功能 1、该内存库通讯的数据量不确定, 最大5Mbit/s  2、该内存库用于模块间的数据交互 3、该内存库只允许一个模块写入, 但可多个模块读取, 但需要各个读取模块没有任何相互干扰, 比如一个模块可能读取的速度较慢, 一个读取的速度较快 4、该内存库需要具有一定的数据缓冲, 实际的应用上, 用于视频帧数据的交互,
C#编写的一个电影购票系统
C#应用台控制程序的编写的小程序,对初学者有些许帮助
高并发抢购思路
电商的秒杀和抢购,对我们来说,都不是一个陌生的东西。然而,从技术的角度来说,这对于Web系统是一个巨大的考验。当一个Web系统,在一秒钟内收到数以万计甚至更多请求时,系统的优化和稳定至关重要。这次我们会关注秒杀和抢购的技术实现和优化,同时,从技术层面揭开,为什么我们总是不容易抢到火车票的原因? 一、大规模并发带来的挑战 在过去的工作中,我曾经面对过5w每秒的高并发秒杀功能,在这个过程中,整...
使用Python和Splinter实现12306火车票查询与抢票
有一段时间没有使用Python了,前几天经朋友提起一篇关于用Python实现抢火车票的文章,百度了实现抢火车票的技术细节,网上却有不少资料,也不是新鲜的东西。在了解了一些技术手段后,也尝试实现了一下,代码写得粗糙,纯当娱乐,本文在Windows系统下完成。
java实现火车票售卖-高并发
实现1:  * 售卖火车票实现1:  * 用ArrayList  *  * 产生的问题:  * 重复销售  * 超量销售  *   *  原因:  *  1.size不是原子的    *  2.remove不是原子的  *  3.判断+操作 不是原子的  package sell_ticket_test; /** * 售卖火车票实现1: * 用ArrayList * * 产生的问题:...
Python3实现抢火车票功能(上)
项目内容 (1)利用python实现火车/高铁票查询功能; (2)利用python实现抢火车/高铁票功能; 项目内容1 相关模块: requests模块、prettytable模块以及python自带的一些基本模块。(相关模块均使用pip安装即可) 主要思路: 构建相关的URL请求,并对返回的JSON数据进行解析处理最后显示即可。 其中值得一提的有: (1)需要对特殊的URL发送...
多线程(同步锁)
多线程(同步锁)
实现Runnable接口的方式卖电影票(同步代码)
package test44;/*** * * 实现Runnable接口的方式卖电影票 * * 通过加入延迟后,就产生了问题:相同票卖多次(cpu的一次操作必须是原子性的),出现负数票(随机性和延迟导致的) * * @author samsung * * 如何解决线程安全问题? * * 要想解决问题,就要知道那些原因会导致出问题:(而且这些原
多线程同步几个例子(买票程序的synchronized)
//例子1:用extends继承Thread类,使用synchronized修饰方法里面代码块的办法 //这里面的记得static是必须的,因为如果不用static的话 在Test类中声明了两个A的对象,各自都有自己的100张票 //违背了火车站点购票资源统一的原则 class A extends Thread{    public static String str = new
用买票例子讲讲多线程安全问题
在javase中多线程安全问题,买票的例子几乎是都会讲到,今天
如何开发一个抢单chrome插件
出于学写chrome插件&满足买买买心态的目的,试了下从零开始写一个chrome抢单插件。实验的网站是nike和adidas的美国官网。
java基础--多线程模拟买票案例---(同步)
Thread类中的构造方法和常用方法: 构造方法:public Thread() 和 public Thread(Runnable target) 常用方法:start() 开启线程 和 getName() 获取线程名字,线程名字的默认编号是Thread-编号,编号是默认从0开始 currentThread()是Thread的静态方法,获取当前线程对象 多线程安全问题: ...
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 nlp课程怎么报名 java抢课学习的代码