qq96567290305-09 08:50
等级
1楼
这里我们传参又该怎么传,按照例子来讲实例化的是1个对象但实际上窗口1卖3张票窗口2要卖5张票
u01097095105-09 09:30
等级
2楼

线程安全的想法是,加一把锁,将部分操作锁起来
你只要能够实现ticket--的时候是用一个锁包起来的就行,至于锁,所有用户看到的锁必须是同一把
比如你定义一个static变量,就能保证是同一个,至于锁,可以是任何一个对象
staticObjectobj=newObject();
voidsold(){

synchronized(obj){
ticket--;
System.out.println(...第ticket张票....);
}
}

把这个卖的过程写成一个方法,其他线程只要不断去调用这个方法就行了
qq96567290305-09 09:46
等级
3楼
谢谢,我这边已经实现的方法如图
,
SaleTickets runTicekt = new SaleTickets(21);// 只定义了一个实例,这就只有一个Object mutex = new Object();即一个锁。
runTicekt.setNum(4);
Thread th1 = new Thread(runTicekt, "用户1");// 每个线程等其他线程释放该锁后,才能执行
th1.start();
Thread th2 = new Thread(runTicekt, "用户2");// 每个线程等其他线程释放该锁后,才能执行
th2.start();
Thread th3 = new Thread(runTicekt, "用户3");// 每个线程等其他线程释放该锁后,才能执行
th3.start();
Thread th4 = new Thread(runTicekt, "用户4");// 每个线程等其他线程释放该锁后,才能执行
th4.start();
Thread th5 = new Thread(runTicekt, "用户5");// 每个线程等其他线程释放该锁后,才能执行
th5.start();
Thread th6 = new Thread(runTicekt, "用户6");// 每个线程等其他线程释放该锁后,才能执行
th6.start();

《洛阳晚报》记者从隋唐百戏城项目指挥部获悉,目前演出票价已经确定,普通座位票每张80元,vip座位票每张160元,感兴趣的市民和游客可以现场购票,还可通过美团网购买团购票,普通票每张69元,vip票每张139元。散票,位于延吉市西部,散场后没个把小时别想从体育场进入市区,虽然比赛日会加开公交,散票每场不少于12000张,下面这些购票信息希望能有帮助:400、散票怎么买,但仍难以缓解交通压力,散票全市统一配送费为12元/,均能买到散票。3.如您不是通过“选座购买”方式进行的票品购买,最终票品数量视项目主办方及场馆情况而定,正式开票后将根据用户付款先后顺序依次配票,可能存在票品不足不能为您配票的风险,如最终未能配票,趣票承诺全额退款,但不承担其他损失, 请点击查阅 购票服务条款>>。
qq96567290305-09 09:52
等级
4楼
当然哈有一种方法,所有人一张张买甲要买5张票,就让他循环五次,也就是开启五个线程来买再封装起来,判断全部买成功才是买成功,否则算是失败,但是我觉得这样好像会出问题,而且还有点麻烦
maradona198405-09 10:08
等级
5楼
实际场景和你写线程模拟的代码实现还是有很大差别的
目前360拥有主防库日志数18.9万亿条,样本总数高达95亿,dns库解析记录超过90亿条,url库每天查询300亿。在选举过程中并无镇领导给姜树友加票情况,无这三张票,姜树友的选票应为主任票:43张,委员票19张,共62张,选民总数122人,即使不加这三张票java多线程死锁,姜树友也当选为主任。这里特别强调在场景上必须实现事务一致性,这是因为像是在天猫或者淘宝下单的时候,订单往往会涉及到几百条sql以及几个库,而且一个事务可能会涉及到几个表的若干个字段,而其本质上是一个事务,而如果将事务拆开并且同步到b城主库上面去的时候就会发现有些数据当读取过来之后就是不一致的,比如对于一笔订单而言java多线程死锁,可能在a城主库中读取的数据发现已经支付,但是在b城中读取出来的数据发现这笔订单还没有支付,这就会产生数据不一致的问题。
需求不同,实现起来也肯定也差很远
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-107569-1.html
才是最明智者
别太当回事