多线程出现卖相同票号码和负数票分析
2014-01-10 11:41
155 查看
package com.mth.synchronizedtest; public class SynchronizedTest implements Runnable { private int tickets = 100; @Override public void run() { for (int i = 0; i < 100; i++) { if (tickets > 0) { try { /* * 进来之后判断数量大于0之后 休眠10毫秒 卖出去同一张票是什么原因? * 1号 2号 线程进来判断票数大于0 卖7号票 可是1号线程买完之后还没来得及打印 2号也买了7号票 * * 1.为什么会出现负数票 * 2.分析 * (1)当票数等于1的时候 可能有2个线程判断完if语句但是 还在休眠 * (2)休眠结束后 继续执行卖票环节 * (3)出现负数票 * 3.出现这种问题该怎么办? * (1)休眠之后在继续执行判断 是不是有票? */ Thread.sleep(10); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } System.out.println(Thread.currentThread().getName() + "号窗口卖出" + this.tickets-- + "号票"); } } } public static void main(String[] args) { SynchronizedTest test = new SynchronizedTest(); Thread t1 = new Thread(test); Thread t2 = new Thread(test); Thread t3 = new Thread(test); Thread t4 = new Thread(test); t1.start(); t2.start(); t3.start(); t4.start(); } }
相关文章推荐
- 多线程_买电影票出现了同票和负数票的原因分析
- 多线程-买电影票出现了同票和负数票的原因分析
- 读取一组电话号码簿(由姓名和手机号码组成),将重复出现的项删除(姓名和电话号码都相同的项为重复项,只保留第一次出现的项),并对姓名相同手机号码不同的项进行如下整理。
- 使用 xbrowser 连接 redhatas5 linux 服务器,出现黑屏。故障分析及处理!
- 通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串过滤程序,若字符串中出现多个相同的字符,将非首次出现的字符过滤掉。
- 统计字符串中相同字符出现的次数
- 【超线程多核心下Java多线程编程分析】
- 用历史出现的概率分析近阶段股市会有偏差
- 一行字符串,寻找其中出现相同且长度最长的子串
- [转]Ogre1.7的多线程分析
- Servlet单例多线程分析
- 统计一个单位职工的年龄,要求把相同年龄最多的那个年龄找出来(可能有几个这样的年龄),并统计出现的次数
- java 多线程同时操作ArrayList 出现ConcurrentModificationException 解决办法
- Java多线程(五)之BlockingQueue深入分析
- 假设两个字符串中所含有的字符和个数都相同我们就叫这两个字符串匹配, 比如:abcda和adabc,由于出现的字符个数都是相同,只是顺序不同, 所以这两个字符串是匹配的。要求高效!
- 一道阿里多线程面试题的分析与应对
- Exchange server 2007环境下,outlook2007同步脱机地址簿时出现“0x80190194”错误的分析与解决方法
- 应用程序安装时出现2个相同的图标
- 关于dialog出现not attached to window manager问题深入分析
- 基于Linux的消息队列及多线程编程实现的聊天室(二)代码分析