`
谷超
  • 浏览: 166255 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

多线程售票实现

    博客分类:
  • Java
阅读更多

前两天写了个多线程售票的程序,练习下多线程和同步的概念,把代码贴出来与大家分享!

package test.thread;

class Test implements Runnable {//多线程售票类
	station s=new station();
	
	public static void main(String[] args) {
		Test test = new Test();
		Thread t1 = new Thread(test);
		Thread t2 = new Thread(test);
		Thread t3 = new Thread(test);
		
		t1.setName("t1"); 
		t2.setName("t2");
		t3.setName("t3");
		t1.start(); 
		t2.start();
		t3.start();
	}
  
	public void run(){
		while(s.getTicket()>0){s.sellTicket(Thread.currentThread().getName());
	}
}

 

package test.thread;

public class station {//车站类
	 private static station instance = null;
	 private static int ticket=100;
	 public static synchronized station getInstance(){
		 if(instance == null)   
	        instance = new station();   
	        return instance;   
	} 
	 
	public synchronized void sellTicket(String threadName){
		if(ticket>0){
			System.out.println("线程 "+threadName+"得到票 "+ticket);
			ticket--;
		}
	}

	public static int getTicket() {
		return ticket;
	}

	public static void setTicket(int ticket) {
		station.ticket = ticket;
	}
	
}

 上面的代码中车站类不必写成单例形式,分析下run方法体中的多线程代码,其中写一个车站卖票的方法,卖票方法中有2个动作,第一步得到票,第二步票数减1,这两个动作不能被多线程打断,所以要放在同步方法体中,在run方法体中s.getTicket()不是同步的方法,就是说可以有多个线程一起执行这个方法,得到当前票数是100,但只有一个线程能够进入到售票的方法中进行售票,然后票数减1,而其他线程进入到售票的方法中,看到的车票是减1后的票数,保持了数据一致,不会出现同一张票卖多次的情况,直至把票卖完!

0
0
分享到:
评论

相关推荐

    JAVA多线程售票系统

    JAVA多线程售票系统 本资源摘要信息将围绕JAVA多线程售票系统展开,涵盖多线程编程、同步机制和售票系统的设计思想。 多线程编程 在JAVA中,多线程编程是指在一个程序中使用多个线程来执行不同的任务,以提高程序...

    多线程+售票案例.docx

    多线程可以通过继承 Thread 类或实现 Runnable 接口来创建。在这里,我们将介绍继承 Thread 类的方式。 继承 Thread 类 ---------------- 继承 Thread 类是一种简单的多线程创建方式。只需要创建一个新的类,继承 ...

    多线程 售票系统

    在计算机科学领域,多线程是一种...总结来说,"多线程售票系统"涉及了线程的创建、线程入口函数、线程同步与通信、异常处理、资源管理等多个关键概念。理解和正确应用这些概念对于构建高效、稳定的并发系统至关重要。

    Java多线程同步机制在售票系统的实现

    ### Java多线程同步机制在售票系统的实现 #### 一、引言 随着计算机硬件的发展,多核处理器已经成为主流配置,这为多线程编程提供了更广阔的应用场景。多线程能够充分利用多核处理器的优势,提高程序的并发性和...

    多线程设计一个火车售票模拟程序

    我们将使用多线程技术来实现这个程序,使得每个售票点可以独立地售出火车票。 多线程设计 在 Java 中,我们可以使用 Thread 类来创建多线程。每个线程都可以独立地执行一段代码,这使得我们可以同时执行多个任务。...

    delphi 多线程模拟售票

    本教程将聚焦于使用Delphi这一强大的Windows应用程序开发工具来实现多线程,特别是模拟一个售票系统,以展示多线程如何在实际场景中应用。 Delphi是Borland公司(现Embarcadero Technologies)推出的一款集成开发...

    火车票售票系统 创建多线程

    本文将基于给定的代码片段,详细介绍如何在一个简单的火车票售票系统中实现多线程。 #### 1. 多线程简介 多线程是指从软件或者硬件上实现多个线程并发执行的技术。程序执行时,进程可以创建多个线程,这些线程共享...

    使用多线程模拟火车站售票系统

    综上所述,设计和实现一个多线程的火车站售票系统,需要理解并熟练应用多线程编程、线程同步以及Windows API的相关知识。通过合理地组织线程和同步策略,我们可以构建出高效、稳定且无数据竞争的售票系统。在实际...

    多线程模拟汽车司机与售票员同步

    在本实验中,我们探讨了如何使用C语言和Windows API实现多线程来模拟汽车司机与售票员的同步操作。这个实验旨在展示并发执行的线程如何通过同步机制协同工作,确保程序的正确运行。 首先,多线程是操作系统中的一种...

    简单实现多线程同步示例(模拟购票系统)

    在编程领域,多线程是实现并发执行任务的重要机制,特别是在服务器端开发和高并发场景中。本示例“简单实现多线程同步示例(模拟购票系统)”旨在通过一个具体的实例,帮助开发者理解如何在Java中创建并管理多线程...

    基于Java多线程同步技术的简易模拟售票系统实现.pdf

    根据给定文件的信息,本篇文档是关于Java多线程同步技术在简易模拟售票系统中的应用研究。文档详细介绍了多线程的概念、如何在Java中创建线程、线程同步技术以及如何利用这些技术来解决共享资源访问时的数据一致性...

    Java多线程同步机制在网络售票系统中的应用.pdf

    本文详细介绍了Java多线程机制的使用,以及如何通过多线程同步机制来安全地实现网络售票过程。 首先,Java语言内置了对多线程的支持,可以同时并行运行多个独立的线程。Java虚拟机(JVM)负责实现多线程机制,当JVM...

    Java多线程模拟电影售票过程

    本文主要讲解了Java多线程模拟电影售票过程,通过示例代码详细介绍了多线程的实现和线程同步技术。文章分为两个部分,分别是Test.java和tickets.java,下面对这两个部分进行详细解释。 Test.java Test.java是主...

    java上机报告5——Java的多线程编程1

    该系统模拟了电影院三个售票窗口同时出售电影票的过程,通过 Java 多线程编程实现了多窗口同时出票、随机出票间隔和避免重复出售相同电影票的功能。 一、 Java 多线程编程概念 Java 多线程编程是指在同一个程序中...

    基于Linux的多线程火车售票系统设计源码

    本项目是基于Linux的多线程火车售票系统设计源码,包含154个文件,其中主要包含53个xml配置文件,25个java源代码文件,21个png图片文件等。系统采用了Java、C和Python编程语言,实现了具有上下两层架构(app、device...

    多线程:4窗口同时买票

    在我们的例子中,"4窗口同时买票"就是一种多线程的体现,每个售票窗口可以看作一个独立运行的线程,它们可以同时为不同的客户办理购票业务,提高工作效率。 多线程在实际应用中有着广泛的应用,例如在服务器端处理...

    基于Java多线程同步技术的简易模拟售票系统实现.zip

    这个简易模拟售票系统实现是基于Java的并发编程概念,旨在演示如何在多线程环境下确保数据的一致性和正确性。下面我们将深入探讨该系统背后的多线程同步技术。 1. **线程与并发** 在计算机系统中,线程是程序执行...

    线程同步解决火车站售票问题

    在计算机系统中,多线程编程是常见的并发执行方式,特别是在服务器端和高并发应用中。线程同步是多线程编程中一个重要的概念,它确保了多个线程在访问共享资源时能按照一定的顺序或者规则进行,防止数据的不一致性和...

    Java多线程之火车售票系统

    Java多线程之火车售票系统是Java多线程编程中的一种实践应用,通过实现Runnable接口或继承Thread类来创建多线程,实现火车售票系统的并发访问和资源共享。 多线程编程概述 在Java中,多线程编程是指在一个程序中...

Global site tag (gtag.js) - Google Analytics