Java线程初步了解2-售票系统
来源:互联网 发布:上古卷轴5优化工具 编辑:程序博客网 时间:2024/06/05 16:06
在1中感觉引用Runnable接口的方法比直接继承Thread的方法好了不少这次就试着用这个。
首先创建一个类他引用Runnable接口
这个售票系统很简单就是有100张票,开启不同的数字去减少知道数字为0.为止
public class sale implements Runnable { //定义100张票 private static int c=100; Object obj1 = new Object(); public void run(){ //卖完票就结束线程的运行 while(c>0){ System.out.println(Thread.currentThread()+""+c); c--; } } public static void main(String[] args) { sale a= new sale(); Thread t1 = new Thread(a,"a"); Thread t2 = new Thread(a,"b"); t1.start(); t2.start(); }}
这样看起来貌似没什么问题,但当我们让他在进入卖票时候Sleep一下子,会不会出错呢?
public class sale implements Runnable { private static int c=100; //Object obj1 = new Object(); public void run(){ while(c>0){ //synchronized (obj1) { //if(c>0){ try { Thread.sleep(300); } catch (Exception e) { // TODO: handle exception } System.out.println(Thread.currentThread()+""+c); c--; } }
编译一下是否出错了?
是否有同一张片卖了两次的情况?
为什么会出现这种情况呢?
这是因为在运行的时候,因为一个线程被限制,导致其他线程进入同时运行一个数据导致的。那么怎么才能解决这个问题呢?
这就要用到线程中的锁,同步来解决这个问题了。
Java线程初步了解3——锁,同步
0 0
- Java线程初步了解2-售票系统
- java中线程初步了解
- JAVA线程初步了解1
- Java线程安全初步了解
- Java多线程4—线程同步问题+火车票售票系统
- Java多线程4—线程同步问题+火车票售票系统
- java火车站售票系统之多线程并发访问
- java售票系统(涉及线程和xml)
- Java---线程池的初步了解
- Java线程学习之一---售票
- java线程关于售票问题
- UI线程初步了解
- 初步了解线程
- java --thread--火车票售票系统
- java 多线程模拟售票系统
- 初步了解---数据库系统
- 使用java多线程模拟火车售票系统(2)
- 初步了解进程和线程
- C#使用HttpWebRequest和HttpWebResponse上传文件示例
- sql由一个表筛选结果建另一个表
- 多媒体编解码
- Linq to xml 查找所有的子节点
- android Activity启动模式--复习
- Java线程初步了解2-售票系统
- 使用category 为 AppDelegate 的代码分层
- 冒泡排序
- 润乾报表通过JS自带函数来实现自动计算中的四舍五入
- Ulua热更新提高 <三> 网络通信和ProtocolBuffer
- Android四大组件Service启动源码分析
- 面向社交网络用户的多维关联信息挖掘技术
- 2.1 QProcess调用外部程序获得实时输出
- Bearer