用java代码模拟卖100张火车票问题:四个售票窗口同时售票且不能卖出同一张火车票。

代码如下。

package lesson;

public class demo1 {

public static void main(string[] args) {

// todo auto-generated method stub

train tt = new train();

thread t1 = new thread(tt);

thread t2 = new thread(tt);

thread t3 = new thread(tt);

thread t4 = new thread(tt);

t1.setname("窗口1");

t2.setname("窗口2");

t3.setname("窗口3");

t4.setname("窗口4");

t1.start();

t2.start();

t3.start();

t4.start();

}

}

class train implements runnable{

int a= 1;

@override

public synchronized void run() {//synchronized为进程上锁

// todo auto-generated method stub

while(true) {

if(a<=100) {

system.out.println(thread.currentthread().getname()+"卖出"+a+"号票");

a++;

}

try {

this.wait(230);

//thread.sleep(100);//结果输出只有窗口1卖了所有票如图2所示

} catch (interruptedexception e) {

// todo auto-generated catch block

e.printstacktrace();

}

}

}

}

wait()正常运行结果图1:

sleep()运行结果如图2所示:

两种结果不同的主要主要是sleep方法没有释放锁,而wait方法释放了锁,使得其他线程可以使用同步控制块或者方法。

总结

到此这篇关于java线程中卖火车票问题的深入讲解的文章就介绍到这了,更多相关java线程卖火车票问题内容请搜索萬仟网以前的文章或继续浏览下面的相关文章希望大家以后多多支持萬仟网!

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

线程java买火车票_Java线程中卖火车票问题的深入讲解相关推荐

  1. java闭合数据_java多线程中线程封闭详解

    线程封闭的概念 访问共享变量时,通常要使用同步,所以避免使用同步的方法就是减少共享数据的使用,这种技术就是线程封闭. 实现线程封闭的方法 1:ad-hoc线程封闭 这是完全靠实现者控制的线程封闭,他的 ...

  2. java runnable 异常_JAVA 线程中的异常捕获

    在java多线程程序中,所有线程都不允许抛出未捕获的checked exception(比如sleep时的InterruptedException),也就是说各个线程需要自己把自己的checked e ...

  3. java run 方法_java线程中的run()方法能有几个啊?

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 给个例子 package test; public class Test{ public static void main(String[] args){ ...

  4. 每个java程序都至少有一个线程给主线程,java程序在主线程中判断各个子线程状态的操作,该如何解决...

    java程序在主线程中判断各个子线程状态的操作 每个子线程在队列为空时会wait等待其他线程添加新url到队列,到最后所有子线程都取不到url时也会都wait住,要在主线程中判断如果所有的子线程都是w ...

  5. java多线程抽奖_java 线程池、多线程并发实战(生产者消费者模型 1 vs 10) 附案例源码...

    导读 前二天写了一篇<Java 多线程并发编程>点我直达,放国庆,在家闲着没事,继续写剩下的东西,开干! 线程池 为什么要使用线程池 例如web服务器.数据库服务器.文件服务器或邮件服务器 ...

  6. 线程池 java 新建方式_Java线程池的四种创建方式

    Java通过Executors提供四种线程池,分别为: newCachedThreadPool创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程. newFi ...

  7. java 线程池 源码_java线程池源码分析

    我们在关闭线程池的时候会使用shutdown()和shutdownNow(),那么问题来了: 这两个方法又什么区别呢? 他们背后的原理是什么呢? 线程池中线程超过了coresize后会怎么操作呢? 为 ...

  8. java+向前进一_Java 线程基础

    前言 线程并发系列文章: 熟练掌握线程原理与使用是程序员进阶的必经之路,网上很多关于Java线程的知识,比如多线程之间变量的可见性.操作的原子性,进而扩展出的Volatile.锁(CAS/Synchr ...

  9. java 线程池的理解_JAVA线程池原理的理解

    线程池原理基础理解: 线程池初始化规定个数的线程,然后这些线程一直运行,并且监控线程队列,只要线程队列被添加进线程,那么线程池不断从队列中取出线程运行.直到队列中的线程为空.实例代码如下: packa ...

最新文章

  1. 【青少年编程竞赛交流】12月份微信图文索引
  2. js 矩阵转置_js对象数组矩阵转置(行转列)的实践
  3. javascript漏洞-检测到目标站点存在javascript框架库漏洞
  4. java重写6,java重写equals()方法和hashCode()方法
  5. java输错重新输入_java程序在dos界面运行时输入错误后返回重新输入的方法
  6. python编程软件排行榜_PYPL 9月编程语言排行榜发布 Python一枝独秀
  7. Hibernate中用到联合主键的使用方法,为何要序列化,为何要重写hashcode 和 equals 方法...
  8. keil c语言 位域,联合体位域在keil c遇到的问题怎样解决?
  9. ESLint检测JavaScript代码
  10. 制作LINUX安装DEB,脚本中的函数报错怎么办?
  11. Logs Viewer
  12. 计算机主机硬盘的拆装,机械硬盘怎么拆开?机械硬盘拆卸方法
  13. outlook邮箱如何群发邮件?outlook群发邮件如何相互之间看不到?
  14. WP7 个人股票软件 GilStock v1.0 正式版
  15. Kotlin关键字总结
  16. NTKO OFFICE文档控件使用
  17. IKAnalyzer 添加扩展词库和自定义词
  18. 北宋政坛翘楚,文坛领袖大串联
  19. 开启CDN 后网站出现 “ 您的连接不是私密连接 ”
  20. 笔记本软件页面分辨率低_笔记本分辨率降低怎么办_笔记本电脑电脑分辨率低怎么解决-win7之家...

热门文章

  1. Android使用讯飞SDK开发语音识别及合成小Demo
  2. java xmpp实例,XMPP协议学习笔记一
  3. LeetCode:374. 猜数字大小
  4. p2p终结者破解版下载 4.15 2011最新版
  5. FastJson write JavaBean error
  6. JStorm-介绍-阿云栖社区
  7. erdas监督分类(一)
  8. 计算机毕业设计JavaNBA论坛系统(源码+系统+mysql数据库+lw文档)
  9. Word文档管理首选工具Aspose.Words for .NET完整功能一览!
  10. SOLIDWORKS Simulation可用做有限元分析,你还不知道?