- (void)viewDidLoad {
[super viewDidLoad];
_condition = [[NSCondition alloc] init];
}
- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {
[NSThread detachNewThreadWithBlock:^{
[_condition wait];//让当前线程处于等待状态,直到被唤醒
for(int i=0;i<50;i++){
[NSThread sleepForTimeInterval:0.001];
NSLog(@"222222222222222222");
}
}];
[NSThread detachNewThreadWithBlock:^{
for(int i=0;i<50;i++){
[NSThread sleepForTimeInterval:0.001];
NSLog(@"1111111111111111111111111111");
}
[_condition signal];//发出信号,唤醒一个正在等待的线程。您可以使用该方法唤醒一个正在等待条件的线程。您可以多次调用这个方法来唤醒多个线程。如果没有线程在等待条件,这个方法就什么也不做。
}];
}
最终的输出是:先输出所有的1,然后再输出所有的2