- (void)sellTickets {
while (1) {
@synchronized (self) {
if (self.leftTickets > 0) {
[NSThread sleepForTimeInterval:0.2];
int count = self.leftTickets;
self.leftTickets = count - 1;
NSLog(@"剩余的票数%d",self.leftTickets);
NSLog(@"当前线程=%@", [NSThread currentThread]);
}
}
if (self.leftTickets == 0) {
NSLog(@"票卖完了");
NSLog(@"退出线程%@",[NSThread currentThread]);
[NSThread exit];
}
}
}
2016-11-04 12:06:51.795 TTTTTTTTTT[7295:81206] 票卖完了
2016-11-04 12:06:51.795 TTTTTTTTTT[7295:81207] 票卖完了
2016-11-04 12:06:51.795 TTTTTTTTTT[7295:81208] 票卖完了
2016-11-04 12:06:51.796 TTTTTTTTTT[7295:81206] 退出线程<NSThread: x60000026a3c0>{number = 3, name = thread1}
2016-11-04 12:06:51.796 TTTTTTTTTT[7295:81207] 退出线程<NSThread: x60000026a380>{number = 4, name = thread2}
2016-11-04 12:06:51.796 TTTTTTTTTT[7295:81208] 退出线程<NSThread: x60000026a740>{number = 5, name = thread3}
这就是NSThread加锁以及加锁的一些注意事项。如果感觉对你有用,记得关注啊,也希望大家多多支持ASPKU。
注:相关教程知识阅读请移步到IOS开发频道。










