#import "ViewController.h"
@interface ViewController ()
@property (nonatomic, strong) NSThread *th1;
@property (nonatomic, strong) NSThread *th2;
@property (nonatomic, strong) NSThread *th3;
@property (nonatomic, assign) NSInteger tickets;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
self.tickets = 1000;
self.th1 = [[NSThread alloc] initWithTarget:self selector:@selector(sellTickets) object:nil];
self.th1.name = @"小丽";
self.th2 = [[NSThread alloc] initWithTarget:self selector:@selector(sellTickets) object:nil];
self.th2.name = @"小明";
self.th3 = [[NSThread alloc] initWithTarget:self selector:@selector(sellTickets) object:nil];
self.th3.name = @"小张";
}
-(void)sellTickets {
while (self.tickets > 0) {
//token 锁对象 锁对象时同一个,时唯一的、这里用self即可
@synchronized (self) {
NSInteger currentTickers = self.tickets;
if (currentTickers > 0) {
NSLog(@"%@卖一张票,还剩下%ld张", [NSThread currentThread].name,
--self.tickets);
}else{
NSLog(@"已经售罄");
}
}
}
}
-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
[self.th1 start];
[self.th2 start];
[self.th3 start];
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end