`

133_多线程(售票的例子)

 
阅读更多
/*
需求:简单的买票程序
多个窗口卖票
*/

class TWindow extends Thread{
	private static int tickNum = 100;//此处若不加static,则每个对象都可以售100张票,但是加static,tickNum的生命周期就很长
	public void run(){
		while(true){
			if(tickNum >0){
				System.out.println(Thread.currentThread().getName()" sale: "+ tickNum--);
			}
		}
	}
}

class Ticket{
	public static void main(String[] args){
		TWindow t1 = new TWindow();
		TWindow t2 = new TWindow();
		TWindow t3 = new TWindow();
		TWindow t4 = new TWindow();
		
		t1.start();
		t2.start();
		t3.start();
		t4.start();
	}
}

class TWindow extends Thread{
	private int tickNum = 100;//此处若不加static,只创建一个线程,四次开启运行线程
	//会出现错误。可以用运动员跑步,start()为司令官发枪。第一次发枪,运动员跑出去了,第二次发枪,第三次发枪,第四次发枪。后面的发枪没意义。
	//会提示线程状态出问题了。
	public void run(){
		while(true){
			if(tickNum >0){
				System.out.println(Thread.currentThread().getName()" sale: "+ tickNum--);
			}
		}
	}
}

class Ticket{
	public static void main(String[] args){
		TWindow t1 = new TWindow();
		//TWindow t2 = new TWindow();
		//TWindow t3 = new TWindow();
		//TWindow t4 = new TWindow();
		
		t1.start();
		t1.start();
		t1.start();
		t1.start();
	}
}

解决方法:通过另一种创建线程的方式。
分享到:
评论

相关推荐

    duoxiancheng.rar_多线程_多线程卖票

    通过在Linux上使用C语言和pthread库,我们可以创建并管理多线程程序,有效地处理并发操作,如模拟售票过程。在实践中,确保线程安全是关键,这通常需要对共享资源进行适当的同步,如使用互斥锁。

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

    ### 火车票售票系统创建多线程 在计算机科学领域中,多线程技术被广泛应用于提高软件系统的响应速度、并发处理能力和资源利用率。本文将基于给定的代码片段,详细介绍如何在一个简单的火车票售票系统中实现多线程。...

    demo.rar_DEMO_java线程_个

    另外,`javaee.jar`文件可能是Java企业版(Java EE)的库,其中包含了支持多线程和并发处理的API,如Servlet和EJB。在实际的Web应用中,服务器端的多线程处理对于处理来自多个用户的请求至关重要。例如,每个HTTP...

    c++并发编程.rar_C 并发编程_C++并发编程_售票_售票系统_并发

    在这个售票系统中,我们可能会使用多线程,因为每个售票终端可以视为一个独立的执行线程。 C++中实现并发编程通常使用以下技术: 1. **线程**:C++11及更高版本提供了`<thread>`库,允许创建和管理线程。例如,...

    27_多线程_第2天(线程安全、线程同步、等待唤醒机制、单例设计模式)_讲义.doc

    例如,在电影院售票的例子中,如果没有同步机制,可能出现票号重复或者负数的情况。 【线程同步】 线程同步是解决线程安全问题的一种手段,它确保在任何时刻只有一个线程可以执行特定的代码块。Java提供了两种主要...

    Java 多线程 订票 示例 线程安全

    在Java编程中,多线程是并发编程的重要组成部分,它允许多个任务同时执行,从而提高应用程序的效率和响应速度。然而,多线程环境下的数据共享和操作可能会引发线程安全问题,如果不正确处理,可能导致数据不一致、...

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

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

    多线程:4窗口同时买票

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

    java多线程之火车售票系统模拟实例

    Java多线程之火车售票系统模拟实例 本文将从Java多线程之火车售票系统模拟实例中提取相关知识点,以便读者更好地理解Java多线程编程的基本概念和应用。 1. 多线程编程 Java多线程编程是指在一个Java程序中同时...

    多线程的一个很好的例子

    在这个多线程的例子中,我们模拟了一个售票系统的场景。系统中有一个全局变量表示票的数量,多个线程代表不同的售票员,他们同时尝试出售这些票。这就涉及到线程间的共享数据和同步问题。 3. **线程安全与竞态条件...

    多线程实例,可创建任意多线程

    在这个"多线程实例,可创建任意多线程"的示例中,我们将深入探讨如何在编程环境中实现多线程,并通过一个类比卖火车票的流程来理解其工作原理。 首先,我们要明白什么是线程。线程是程序执行的最小单元,每个线程都...

    JAVA_SE(多线程)

    在售票示例中,对比了使用`Thread`类和实现`Runnable`接口的多线程卖票程序。当使用`Thread`类时,每个线程都有自己的售票对象,可能会导致卖出超过实际票数的问题。而使用`Runnable`接口,所有线程共享同一个售票...

    java多线程经典讲义

    比如在一个售票的例子中,如果没有同步控制,可能导致卖出负数或重复的票。这种问题称为竞态条件。为了解决这个问题,Java提供了synchronized关键字来实现同步代码块,确保同一时间只有一个线程能够执行特定的代码段...

    关于线程的动态停止,一个很经典的多线程麦票程序

    在Java编程中,多线程是并发处理任务的关键机制,允许程序同时执行多个独立的代码段。本示例“线程的动态停止:一个很经典的多线程麦票程序”探讨了如何在运行时控制线程的执行和停止,这对于理解和优化多线程应用...

    swift NSThread线程同步买票小例子

    在Swift编程语言中,NSThread是Apple的Foundation框架提供的一种多线程解决方案,它允许开发者在后台执行耗时任务,从而提高应用的响应速度。在这个"swift NSThread线程同步买票小例子"中,我们将深入理解如何使用...

    多线程例子

    ### 多线程示例分析 #### 一、概述 本篇文章将基于提供的代码示例,深入探讨Windows环境下多线程编程的基本概念和技术要点。该示例通过两个线程(`Fun1Proc` 和 `Fun2Proc`)来模拟票务系统中的售票过程,旨在帮助...

    JAVA实现多线程并发机制

    在这个例子中,我们看到一个简单的Java多线程程序,用于模拟售票系统,其中有两个类`SellThread`和`AddThread`分别代表售票和加票的操作。 首先,我们来理解一下`SellThread`类。这个类实现了`Runnable`接口,这...

    Java多线程-线程的安全问题与线程的同步机制介绍

    Java多线程-线程的安全问题与线程的同步机制介绍 在 Java 多线程编程中,线程安全问题是非常重要的一个话题。当多个线程访问同一个资源时,如果只有读操作那么不会出现线程安全问题,但是如果多个线程对资源进行读...

    Java多线程同步具体实例讲解 .doc

    Java多线程同步是编程中一个非常重要的概念,特别是在并发编程和高并发系统设计中起到关键作用。在Java中,为了保证线程安全,避免数据竞争和不一致的状态,我们通常会使用同步机制来控制对共享资源的访问。本文将...

Global site tag (gtag.js) - Google Analytics