RunLoop常駐執行緒
在開發中,經常遇到的便是開啟一個執行緒,當執行緒的任務完成,該執行緒便會被自動收回。
但是如果我們需要一個執行緒一直存在,等待執行某個任務該怎麼辦呢?
我們可以使用RunLoop來實現
首先:
1. 執行緒的宣告週期與任務有關,任務完成之後,他就會被系統自動銷燬,以節省開支。
2.RunLoop用於控制NSRunLoop裡面執行緒的執行和休眠,在有事情做的時候使當前NSRunLoop控制的執行緒工作,沒有事情做讓當前NSRunLoop的控制的執行緒休眠。
3.每個RunLoop都有一個mode ,model中有timer/source/observer/, 只要這個mode存在,RunLoop 就不會退出
程式碼實現
@interface ViewController ()
@property (strong, nonatomic) NSThread *subThread;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
//建立一個子執行緒
NSThread *subThread = [[NSThread alloc] initWithTarget:self selector:@selector(subThread) object:nil];
//開啟執行緒
[subThread start];
self.subThread = subThread;
}
- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
//當點選的時候在指定的執行緒上執行一個任務
[self performSelector:@selector(threadAction) onThread:self.subThread withObject:nil waitUntilDone:NO];
}
//繫結執行緒事件
- (void) subThread
{
NSRunLoop *runLoop = [NSRunLoop currentRunLoop];
[runLoop addPort:[NSMachPort port] forMode:NSDefaultRunLoopMode];
[runLoop run];//加入當前的RunLoop
}
- (void)threadAction
{
[NSThread sleepForTimeInterval:3.0];
}
@end
相關文章
- iOS:常駐執行緒iOS執行緒
- iOS探索:RunLoop本質、資料結構以及常駐執行緒實現iOSOOP資料結構執行緒
- iOS底層原理 - 常駐執行緒iOS執行緒
- Runloop 多執行緒OOP執行緒
- iOS 多執行緒:『RunLoop』詳盡總結iOS執行緒OOP
- runloop解決Cell上主執行緒卡頓OOP執行緒
- 執行緒池以及四種常見執行緒池執行緒
- nohup在後臺常駐執行php指令碼PHP指令碼
- Runloop-執行迴圈OOP
- 執行緒池OOM異常執行緒OOM
- iOS底層原理 RunLoop基礎總結和隨心所欲掌握子執行緒RunLoop生命週期 --(9)iOSOOP執行緒
- 多執行緒執行任務時,某個執行緒拋異常,如何讓程式立即退出執行緒
- 常見的四種執行緒池執行緒
- 多執行緒------執行緒與程式/執行緒排程/建立執行緒執行緒
- iOS開發面試攻略(KVO、KVC、多執行緒、鎖、runloop、計時器)iOS面試執行緒OOP
- 執行迴路RunLoop型別機制OOP型別
- 執行緒和執行緒池執行緒
- 多執行緒--執行緒管理執行緒
- 執行緒與多執行緒執行緒
- 執行緒 執行緒池 Task執行緒
- 多執行緒【執行緒池】執行緒
- JDK執行緒池異常處理方式JDK執行緒
- 保證執行緒在主執行緒執行執行緒
- Java多執行緒-執行緒中止Java執行緒
- 多執行緒之初識執行緒執行緒
- 執行緒控制之休眠執行緒執行緒
- 【多執行緒總結(二)-執行緒安全與執行緒同步】執行緒
- Java常見知識點彙總(⑬)——執行緒Java執行緒
- 【面經】多執行緒常見面試題執行緒面試題
- 異常執行緒的相關複習(前)執行緒
- 執行緒、開啟執行緒的兩種方式、執行緒下的Join方法、守護執行緒執行緒
- java執行緒之守護執行緒和使用者執行緒Java執行緒
- 執行緒(一)——執行緒,執行緒池,Task概念+程式碼實踐執行緒
- 多執行緒系列之 執行緒安全執行緒
- 二. 執行緒管理之執行緒池執行緒
- iOS 多執行緒之執行緒安全iOS執行緒
- Java多執行緒之執行緒中止Java執行緒
- Android多執行緒之執行緒池Android執行緒
- Java多執行緒-執行緒狀態Java執行緒