java线程售票系统实验_Java多线程同步机制在售票系统的实现

54 科技咨询导报 Science and Technology Consulting Herald 2007 NO.30 Science and Technology Consulting Herald 工 程 技 术 科技咨询导报 多线程技术的思想已经使用了很长的一段时间,它允许CPU处理器时间共享,即很多用户可以共享处理器,每个用户的任务都分配到一段处理器时间。多线程是现代操作系统有别于传统操作系统的重要标志之一,它有别于传统的多进程的概念。 所谓线程就是程序中的一个执行流,多线程程序是指一个程序中包含有多个执行流,多线程是实现并发机制的一种有效手段。进程和线程一样, 都是实现并发性的一个基本单位。 1 基本概念 1.1 线程与进程的主要区别 ①同样作为基本的执行单元,线程的划分比进程小。 ②多进程每个占有独立的内存空间,而多线程共享同一内存空间,通过共享的内存空间来交换信息,切换效率远远高于多进程。 ③ Java 线程调度器支持不同优先级线程的抢占方式,但其不支持相同优先级的时间片 轮换。 ④ Java 运行时系统所在的操作系统(例如:Windows XP)支持时间片的轮换,则线程调度器就支持相同优先级线程的时间片轮换。 1.2 Java 多线程的特点 1.2.1 多线程的继承 由于Java引入了包的概念,从而使类的继承更加简便, 线程的创建就是一个最好的例子。Java多线程的实现有两种办法 ①通过Thread 继承,在下面的研究中,我主要用继承自Thread类来实现Java的多线程技术。 ②通过Runnable 接口。 1.2.2 Java 多线程的同步技术 Java 应用程序的多个线程共享同一进程的数据资源,多个用户线程在并发运行过程中可能同时访问临界区的内容,为了程序的正常运行,在 Java 中定义了线程同步的概念,实现对临界区共享资源的一致性的维护。 1.2.3 Java 多线程的流程控制 Java流程控制的方法有Sleep().Interrupt ().Wait().Notif().Join()等。 1.2.4 临界区 在一个多线程的程序当中,单独的并发的线程访问代码段中的同一对象,则这个代码段叫做临界区,我们需要用同步的机制对代码段进行保护,避免程序出现不确定的因素。 1.2.5 同步机制 Java中支持线程的同步机制,它由 syn-chronized方法实现,分为同步块和同步方法, }} }}}} 在下面的讨论中用 synchronized 的同步块来解决问题。 2 多线程同步机制在车票系统的实现 (1)下面就以售票系统中所涉及的问题来讨论Java的多线程同步机制问题,在售票系统中由于很大一部分时间可能有多人在购买车票,所以必须开辟多个线程同时为他们服务, 在这里我设有四个售票窗口,则开辟四个线程来为四个窗口服务模拟图如图1: (2)出错的程序代码如下: class TicketsSystem { public static void main(String[] args) { SellThread kt=new SellThread(); new Thread(kt).start(); new Thread(kt).start(); new Thread(kt).start(); new Thread(kt).start(); class SellThread extends Thread { int tickets=60; public void run() { while(true) { if(tickets>0) {

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值