一、线程的注意点:
1.不要同时开太多的线程(最多不要超过5条,其中包括主线程)
2.线程概念
2.1.主线程:UI 线程,显示、刷新 UI 界面,处理 UI 控件的事件
2.2.子线程:后台线程,异步线程
3.不要把耗时的操作放在主线程,要放在子线程中执行
二、NSThread 用法
1.创建和启动线程的3种方式
1.1.先创建,后启动
// 创建
NSThread *thread = [[NSThread alloc] initWithTarget:self selector:@selector(download:) object:nil];
// 启动
[thread start];
1.2.创建完自动启动
[NSThread detachNewThreadSelector:@selector(download:) toTarget:self withObject:nil];
1.3.隐式创建(自动启动)
[self performSelectorInBackground:@selector(download:) withObject:nil];
2.常见方法
2.1.获得当前线程
+ (NSThread *)currentThread;
2.2.获得主线程
+ (NSThread *)mainThread;
2.3.睡眠(暂停)线程
+ (void)sleepUntilDate:(NSDate *)date;
+ (void)sleepForTimeInterval:(NSTimeInterval)ti;
2.4.设置线程的名字
- (void)setName:(NSString *)name;
- (NSString *)name;
三、线程同步
1.实质:为了防止多个线程抢夺同一个资源造成的数据安全问题
2.实现:给代码加一个互斥锁(同步锁)
@synchronized(self){
// 被锁住的代码
}