模拟售票

共享的资源是票,tickitsNum记录票的销售情况

对售票的过程进行加锁synchronized(this){},

时间: 2024-10-14 19:43:31

模拟售票的相关文章

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

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

多线程模拟售票

需求:某电影院出售某些电影的票(复联3,红高粱....),有三个窗口同时进行售票(100张票),请您设计一个程序,模拟电影院售票两种方式:继承接口(1)synchronized实现public class SellTicketDemo { public static void main(String[] args) { //创建资源类对象(共享资源类/目标对象) SellTicket st = new SellTicket() ; //创建线程类对象 Thread t1 = new Thread

用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

线程模拟售票问题

线程是我们学习Java知识中一个重要的难点,首先我们要明白两种创建线程的方法,其次在售票问题中我们要注意线程并发带来的线程安全问题. 最后我们要明白几个重要的概念: ①保证代码原子性:所谓代码原子性是指当a线程在执行某段代码块的时候,别的线程必须等待 ,直到a线程执行完才可以执行这段代码. ②对象锁:java中处理线程同步的办法非常简单,只需要在你需要同步的代码块上加上语句:synchronized (object) {需要同步的代码块} ,即可. ③获取线程名称的方法:Thread.curre

模拟售票程序(关于多线程共享的练习)

继承Tread来实现多线程的话,写出的类就是Thread的一个子类,所以用这个自定义类产生的对象就是一个线程:而通过实现Runnable实现类来实现多线程,还要声明一个Thread类的对象,将这个Runnable实现类的对象传入Thread类的一个构造函数来声明一个Thread对象,这个对象才是一个真正的线程对象,而且可以通过将同一个Runnable实现类的对象传入Thread构造器来实现多进程共享. 代码实现: package threadDemo; public class Tickets_

模拟售票窗口前的顾客队列,在队列最前面的人最先买到票。已经买到票的顾客出队,当库存票售完或队伍里没人则停止销售。

<script>var queue = new Array(); //购票队列function client(name) //顾客对象{ this.name = name; //顾客名字 this.ticket = NaN; //票号}queue.push(new client("Lily"),new client("Peter"),new client("Vicky"),new client("Tom"),new

IOS_多线程_售票

H:/1007/01_多线程_大任务_MainViewController.m // MainViewController.m // 多线程-01.大任务 // Created by apple on 13-10-7. #import "MainViewController.h" @interface MainViewController () @property (weak, nonatomic) UIImageView *imageView; @end @implementatio

NSLock简单应用

1 #import "AppDelegate.h" 2 3 @interface AppDelegate () 4 5 @end 6 7 @implementation AppDelegate 8 9 -(void)dealloc{ 10 11 [_window release]; 12 [super dealloc]; 13 } 14 15 16 - (BOOL)application:(UIApplication *)application didFinishLaunchingWi

iOS_多线程(一)

在学习多线程之前首先搞清楚以下几个问题. 并发:在同一时刻,只有一条指令被执行,多条指令进行快速切换执行. 并行:在同一时刻,多个处理器可以处理多条指令 1.什么是进程? 一个运行的程序就是一个进程或一个任务 多个进程之间是具有相互独立的内存空间. 2.什么是线程? 进程当中代码的一个执行路径. 多线程:也就是说代码有多个执行路径. 3.进程与线程的关系? 一个进程至少包含一个线程(主线程),线程是程序的执行流 主线程是其他线程的父线程,所有的界面的显示操作必须在主线程进行. 一个进程中包含多个