类型 | API | 说明 |
---|---|---|
创建 | initWithTarget:selector: object: |
显式创建,需要调用start |
detachNewThreadSelector: toTarget: withObject: |
自动启动线程 | |
阻塞(暂停)线程方法 | + (void)sleepUntilDate:(NSDate *)date |
|
+ (void)sleepForTimeInterval:(NSTimeInterval)time |
||
强制停止线程 | + (void)exit; |
线程进入死亡状态 |
perform系列方法
// 在主线程上执行操作
- (void)performSelectorOnMainThread:(SEL)aSelector withObject:(id)arg waitUntilDone:(BOOL)wait;
- (void)performSelectorOnMainThread:(SEL)aSelector withObject:(id)arg waitUntilDone:(BOOL)wait modes:(NSArray<NSString *> *)array;
// equivalent to the first method with kCFRunLoopCommonModes
// 在指定线程上执行操作
- (void)performSelector:(SEL)aSelector onThread:(NSThread *)thr withObject:(id)arg waitUntilDone:(BOOL)wait modes:(NSArray *)array NS_AVAILABLE(10_5, 2_0);
- (void)performSelector:(SEL)aSelector onThread:(NSThread *)thr withObject:(id)arg waitUntilDone:(BOOL)wait NS_AVAILABLE(10_5, 2_0);
// 在当前线程上执行操作,调用 NSObject 的 performSelector:相关方法
- (id)performSelector:(SEL)aSelector;
- (id)performSelector:(SEL)aSelector withObject:(id)object;
- (id)performSelector:(SEL)aSelector withObject:(id)object1 withObject:(id)object2;
线程的状态转换
1、如果CPU现在调度当前线程对象,则当前线程对象进入运行状态,2、如果CPU调度其他线程对象,则当前线程对象回到就绪状态。
3、如果CPU在运行当前线程对象的时候调用了sleep方法\等待同步锁,则当前线程对象就进入了阻塞状态,等到sleep到时\得到同步锁,则回到就绪状态。
4、如果CPU在运行当前线程对象的时候线程任务执行完毕\异常强制退出,则当前线程对象进入死亡状态。
参考:
https://www.jianshu.com/p/cbaeea5368b1
网友评论