//
// ViewController.m
// 卖票
//
// Created by mac on 15/5/4.
// Copyright (c) 2015年 mac. All rights reserved.
//
#import "ViewController.h"
@interface ViewController ()
@end
@implementation ViewController
-(void)viewDidLoad{
[super self];
totalAmounts = 100;
soldAmounts = 0;
[self work];
}
-(void)work{
NSLog(@"开始卖票");
//初始化锁对象
condition = [[NSCondition alloc] init];
//初始化线程1
thread1 = [[NSThread alloc] initWithTarget:self selector:@selector(sellTicket) object:nil];
[thread1 setName:@"窗口1"]; //设置线程名称
[thread1 start]; //开始执行线程1
//初始化线程2
thread2 = [[NSThread alloc] initWithTarget:self selector:@selector(sellTicket) object:nil];
//设置线程名称
[thread2 setName:@"窗口2"];
//开始执行线程2
[thread2 start];
//初始化线程3
thread3 = [[NSThread alloc] initWithTarget:self selector:@selector(sellTicket) object:nil];
//设置线程名称
[thread3 setName:@"窗口3"];
//开始执行线程3
[thread3 start];
//初始化线程4
thread4 = [[NSThread alloc] initWithTarget:self selector:@selector(sellTicket) object:nil];
//设置线程名称
[thread4 setName:@"窗口4"];
//开始执行线程3
[thread4 start];
}
-(void)sellTicket{
NSLog(@"sellTicket");
//通过循环,模拟买票情景
while (1) {
//上锁
[condition lock];
//还有票没有卖完,继续买票
if (totalAmounts - soldAmounts > 0) {
//线程暂停0.5 秒,模拟用户买票情景
[NSThread sleepForTimeInterval:0.5];
//模拟买到第一张票
soldAmounts +=1;
//打印当前购票结果
NSLog(@"[%@] 剩余%d张票,已售出%d票",[[NSThread currentThread]name],totalAmounts - soldAmounts,soldAmounts);
}
//所有票全都卖完了。跳出循环
else{
NSLog(@"票售完了");
break;
}
[condition unlock];
}
}
@end