用java多线程操作模拟售票系统

class Threadsale implements Runnable{
	int tickets = 100;
	public void run(){
		while(true){
			if(tickets>0){
				System.out.println(Thread.currentThread().getName()+"售车票第"+tickets--+"号");
			}
			else
				System.exit(0);
		}
	}
}
public class DemoThread {
	public static void main(String[] args){
		Threadsale t=new Threadsale();//实例化线程
		Thread t1=new Thread(t,"第1号售票窗口");
		Thread t2=new Thread(t,"第2号售票窗口");
		Thread t3=new Thread(t,"第3号售票窗口");
		Thread t4=new Thread(t,"第4号售票窗口");
		t1.start();
		t2.start();
		t3.start();
		t4.start();
	}
}

运行结果为:

第1号售票窗口售车票第100号

第3号售票窗口售车票第98号

第4号售票窗口售车票第99号

第2号售票窗口售车票第100号

第4号售票窗口售车票第95号

第3号售票窗口售车票第96号

第1号售票窗口售车票第97号

第3号售票窗口售车票第92号

第4号售票窗口售车票第93号

第2号售票窗口售车票第94号

第4号售票窗口售车票第89号

第3号售票窗口售车票第90号

第1号售票窗口售车票第91号

第3号售票窗口售车票第86号

第4号售票窗口售车票第87号

第2号售票窗口售车票第88号

第4号售票窗口售车票第83号

第3号售票窗口售车票第84号

第1号售票窗口售车票第85号

第3号售票窗口售车票第80号

第4号售票窗口售车票第81号

第2号售票窗口售车票第82号

第4号售票窗口售车票第77号

第3号售票窗口售车票第78号

第1号售票窗口售车票第79号

第3号售票窗口售车票第74号

第4号售票窗口售车票第75号

第2号售票窗口售车票第76号

第4号售票窗口售车票第71号

第3号售票窗口售车票第72号

第1号售票窗口售车票第73号

第3号售票窗口售车票第68号

第4号售票窗口售车票第69号

第2号售票窗口售车票第70号

第4号售票窗口售车票第65号

第3号售票窗口售车票第66号

第1号售票窗口售车票第67号

第3号售票窗口售车票第62号

第4号售票窗口售车票第63号

第2号售票窗口售车票第64号

第4号售票窗口售车票第59号

第3号售票窗口售车票第60号

第1号售票窗口售车票第61号

第3号售票窗口售车票第56号

第4号售票窗口售车票第57号

第2号售票窗口售车票第58号

第4号售票窗口售车票第53号

第3号售票窗口售车票第54号

第1号售票窗口售车票第55号

第3号售票窗口售车票第50号

第4号售票窗口售车票第51号

第2号售票窗口售车票第52号

第4号售票窗口售车票第47号

第3号售票窗口售车票第48号

第1号售票窗口售车票第49号

第3号售票窗口售车票第44号

第4号售票窗口售车票第45号

第2号售票窗口售车票第46号

第4号售票窗口售车票第41号

第3号售票窗口售车票第42号

第1号售票窗口售车票第43号

第3号售票窗口售车票第38号

第4号售票窗口售车票第39号

第2号售票窗口售车票第40号

第4号售票窗口售车票第35号

第3号售票窗口售车票第36号

第1号售票窗口售车票第37号

第3号售票窗口售车票第32号

第4号售票窗口售车票第33号

第2号售票窗口售车票第34号

第4号售票窗口售车票第29号

第3号售票窗口售车票第30号

第1号售票窗口售车票第31号

第3号售票窗口售车票第26号

第4号售票窗口售车票第27号

第2号售票窗口售车票第28号

第4号售票窗口售车票第23号

第3号售票窗口售车票第24号

第1号售票窗口售车票第25号

第3号售票窗口售车票第20号

第4号售票窗口售车票第21号

第2号售票窗口售车票第22号

第4号售票窗口售车票第17号

第3号售票窗口售车票第18号

第1号售票窗口售车票第19号

第3号售票窗口售车票第14号

第4号售票窗口售车票第15号

第2号售票窗口售车票第16号

第4号售票窗口售车票第11号

第3号售票窗口售车票第12号

第1号售票窗口售车票第13号

第3号售票窗口售车票第8号

第4号售票窗口售车票第9号

第2号售票窗口售车票第10号

第4号售票窗口售车票第5号

第3号售票窗口售车票第6号

第1号售票窗口售车票第7号

第3号售票窗口售车票第2号

第4号售票窗口售车票第3号

第2号售票窗口售车票第4号

第1号售票窗口售车票第1号

时间: 2024-07-28 15:15:24

用java多线程操作模拟售票系统的相关文章

黑马程序员-Java多线程操作

--Java培训.Android培训.iOS培训..Net培训.期待与您交流!--- Java中的线程 一个程序的运行需要启动一个应用进程,一个进程可以创建多个线程,帮助应用完成多任务操作,实现并发运行.在Java中线程是被封装成Thread类,进行多线程操作时只需要继承一个Thread类,实现自己的功能即可,然后开启此线程,或者你也可以实现一个Runnable接口,然后将其传递给Thread对象,然后再启动它. 线程的创建于启动 继承Thread 创建一个类并继承Thread类,然后实现Thr

Java多线程操作

Java中的线程 一个程序的运行须要启动一个应用进程,一个进程能够创建多个线程.帮助应用完毕多任务操作.实现并发运行.在Java中线程是被封装成Thread类.进行多线程操作时仅仅须要继承一个Thread类,实现自己的功能就可以.然后开启此线程,或者你也能够实现一个Runnable接口.然后将其传递给Thread对象.然后再启动它. 线程的创建于启动 继承Thread 创建一个类并继承Thread类,然后实现Thread类的run方法,在run方法内填上自己的代码.然后创建这个自己定义类,并调用

【转】Java多线程操作局部变量与全局变量

原文网址:http://blog.csdn.net/undoner/article/details/12849661 在这篇文章里,我们首先阐述什么是同步,不同步有什么问题,然后讨论可以采取哪些措施控制同步,接下来我们会仿照回顾网络通信时那样,构建一个服务器端的“线程池”,JDK为我们提供了一个很大的concurrent工具包,最后我们会对里面的内容进行探索. 为什么要线程同步? 说到线程同步,大部分情况下, 我们是在针对“单对象多线程”的情况进行讨论,一般会将其分成两部分,一部分是关于“共享变

Java多线程(三)模拟龟兔赛跑

用Runnable接口实现多线程 public class ThreadDemo { public static void main(String[] args) throws InterruptedException { Racer racer = new Racer(); new Thread(racer, "乌龟").start(); new Thread(racer, "兔子").start(); } } class Racer implements Run

java多线程下模拟抢票

我们设置三个对象分别同时抢20张票,利用多线程实现. 1 public class Web123506 implements Runnable{ 2 private int ticteksNums=20;//票数 3 4 @Override 5 public void run() { 6 while (true){ 7 if(ticteksNums<0){ 8 break; 9 } 10 /* try { 11 //睡眠 12 Thread.sleep(200); 13 } catch (Int

使用Java多线程模简单拟售票系统

创建单个"火车票类" package date0804.demo3; /** * 票 * @author zzw922cn * */ public final class Ticket { private final String name; public Ticket(String name) { super(); this.name = name; } public String getName() { return name; } } 火车票DB的构建 采用静态工厂生产火车票的模

使用无锁完成多线程模拟售票, 理解无锁是啥?

实现的模拟多线程实现售票是每个学习多线程的初学者必须要学会掌握的知识点, 既然掌握的它, 我们自然要举一反三 So~, 无锁版出现了 What无锁? 假如两个线程同时修改一个变量的场景下 我们需要三个值, 预期值(线程副本变量中的值), 主存值(从主存变量中的值), 新值(我们要设置的值) 如果 预期值 不等于 主存值 则忽略 新值 写入  =========> 这句话是一个原子操作, 是不可分割的(就是内存屏障), 在执行这个过程中, 是不会失去时间片的 如果 预期值 等于 主存值 则  新值

JAVA 并发编程-读写锁之模拟缓存系统(十一)

在多线程中,为了提高效率有些共享资源允许同时进行多个读的操作,但只允许一个写的操作,比如一个文件,只要其内容不变可以让多个线程同时读,不必做排他的锁定,排他的锁定只有在写的时候需要,以保证别的线程不会看到数据不完整的文件.这时候就需要使用读写锁. /** * 简单读写锁demo * @author hejingyuan * */ public class ReadWriteLockTest { public static void main(String[] args) { final Queu

Java多线程对同一个对象进行操作

示例: 三个窗口同时出售20张票. 程序分析: 1.票数要使用一个静态的值. 2.为保证不会出现卖出同一张票,要使用同步锁. 3.设计思路:创建一个站台类Station,继承THread,重写run方法,在run方法内部执行售票操作! 售票要使用同步锁:即有一个站台卖这张票时,其他站台要等待这张票卖完才能继续卖票! package com.multi_thread; //站台类 public class Station extends Thread { // 通过构造方法给线程名字赋值 publ