// Created by dyf on 14-6-23. // Copyright (c) 2014年 ___FULLUSERNAME___. All rights reserved. // #import "DYFViewController.h" @interface DYFViewController () @property (nonatomic, strong) NSThread *thread; @end @implementation DYFViewController - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. self.thread = [[NSThread alloc] initWithTarget:self selector:@selector(test) object:@"111"]; self.thread.name = @"1111111111"; } - (void)test { // NSLog(@"startedtest------%@", [[NSThread currentThread] name]); // // 阻塞状态2 // NSDate *date = [NSDate dateWithTimeIntervalSinceNow:5.0]; // [NSThread sleepUntilDate:date]; // // 阻塞状态1 // [NSThread sleepForTimeInterval:5.0]; for (int i = 0; i < 999; i++) { NSLog(@"test-----%d------%@", i, [[NSThread currentThread] name]); if (i == 50) { [NSThread exit]; } } NSLog(@"endedtest------%@", [[NSThread currentThread] name]); } #warning 点击2次屏幕会出现 ‘NSInvalidArgumentException‘, reason: ‘*** -[NSThread start]: attempt to start the thread again‘,调用已经死的线程会报错 - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { // 开启线程 [self.thread start]; } @end
小结:线程的状态大概有5种
新建 就绪 运行 阻塞 死亡