IOS多线程系统学习之线程的操作
2015-12-17 10:30
543 查看
线程的状态
当线程被创建并启动以后,它既不是一启动就进入了执行状态,也不是一直处于执行状态。即使线程开始运行以后,它也不可能一直“霸占”着CPU独自运行,所以CPU需要在多个线程 之间切换, 于是线程状态也会多次在运行,就绪状态之间切换。
当程序创建了一个线程之后,该线程就处于新建状态,此时它和其他Object-C对象一样,仅仅由系统为其分配了内存,并初始化了其成员变量的值。此时的线程对象也没有表现出任何线程的动态特征,程序也不会执行线程的线程执行体。
当线程对象调用了start方法之后,该线程处于就绪状态,系统会为其创建方法调用栈和程序计数器,处于这种状态中的线程并没有开始运行,它只是表示该线程可以运行了。至于该线程何时开始运行,取决于系统的调度。
终止子线程
线程会以一下三种方式之一结束,结束后就处于死亡状态。
1,线程执行体方法执行完成,线程正常结束。
2,线程执行过程中出现了错误。
3,直接调用NSThread类的exit方法来终止当前正在执行的线程。
为了测试某个线程是否正在运行,可以调用线程对象的isExecuting,isFinished方法,当线程正处于执行过程中时,调用isExcuting方法就会返回YES;当线程执行完成后,调用isFinished方法就会返回YES。
如果希望在UI线程线程中终止子线程,NSThread并没有提供方法来终止某个子线程,虽然NSThread提供了cancel方法,但该方法仅仅改变线程的状态,导致该线程的isCancelled方法返回为NO,而不是真正终止该线程。
为了在UI线程中终止子线程,可以向子线程发送一个信号(比如调用子线程的cancel方法),然后在子线程的线程执行体方法中进行判断。如果子线程收到过终止信号,程序应该调用NSThread类的exit方法来终止当前正在执行的循环。
演示代码如下:
运行结果如下:
线程睡眠
如果需要让当前正在执行的线程暂停一段时间,并进入阻塞状态,则可通过调用NSThread类的静态。 sleepXxx方法来完成。NSThread类提供了如下两个控制线程暂停的类方法。
1,
2,
当当前线程调用sleepXxx方法进入阻塞状态后,在其睡眠时间段内,该线程不会获得执行的机会,即使系统中没有其他可执行的线程,处于阻塞状态的线程也不会执行,因此sleepXxx方法常用来暂停线程的执行。
演示代码:
用于控制当前正在执行的线程暂停0.5秒。
改变线程优先级
每个线程执行时都具有一定的优先级,优先级高的线程优先获得较多的执行机会,而优先级低的线程则获得较少的执行机会。每个线程默认的优先级为0.5。
NSThread 提供了如下实例方法和类方法来设置获取线程的优先级。
在上面方法中,setThreadPriority:(double)priority 方法的参数可以是 一个double类型的浮点数,范围为0.0~1.0 ,其中1.0代表最高优先级,0.0代表最低优先级。
演示代码:
运行结果如下:
可以看到UI线程的优先级为0.5,以后用到网络请求,需要多线程的时候,我们可以所用的线程优先级低于0.5就好了哦。这个很重要哦,用的好的话,用户体验会比较好。
当线程被创建并启动以后,它既不是一启动就进入了执行状态,也不是一直处于执行状态。即使线程开始运行以后,它也不可能一直“霸占”着CPU独自运行,所以CPU需要在多个线程 之间切换, 于是线程状态也会多次在运行,就绪状态之间切换。
当程序创建了一个线程之后,该线程就处于新建状态,此时它和其他Object-C对象一样,仅仅由系统为其分配了内存,并初始化了其成员变量的值。此时的线程对象也没有表现出任何线程的动态特征,程序也不会执行线程的线程执行体。
当线程对象调用了start方法之后,该线程处于就绪状态,系统会为其创建方法调用栈和程序计数器,处于这种状态中的线程并没有开始运行,它只是表示该线程可以运行了。至于该线程何时开始运行,取决于系统的调度。
终止子线程
线程会以一下三种方式之一结束,结束后就处于死亡状态。
1,线程执行体方法执行完成,线程正常结束。
2,线程执行过程中出现了错误。
3,直接调用NSThread类的exit方法来终止当前正在执行的线程。
为了测试某个线程是否正在运行,可以调用线程对象的isExecuting,isFinished方法,当线程正处于执行过程中时,调用isExcuting方法就会返回YES;当线程执行完成后,调用isFinished方法就会返回YES。
如果希望在UI线程线程中终止子线程,NSThread并没有提供方法来终止某个子线程,虽然NSThread提供了cancel方法,但该方法仅仅改变线程的状态,导致该线程的isCancelled方法返回为NO,而不是真正终止该线程。
为了在UI线程中终止子线程,可以向子线程发送一个信号(比如调用子线程的cancel方法),然后在子线程的线程执行体方法中进行判断。如果子线程收到过终止信号,程序应该调用NSThread类的exit方法来终止当前正在执行的循环。
演示代码如下:
NSThread* thread; - (void)viewDidLoad { [super viewDidLoad]; // 创建新线程对象 thread = [[NSThread alloc] initWithTarget:self selector:@selector(run) object:nil]; // 启动新线程 [thread start]; } - (void)run { for(int i = 0 ; i < 100 ; i++) { if([NSThread currentThread].isCancelled) { NSLog(@"线程已经终止"); // 终止当前正在执行的线程 [NSThread exit]; } NSLog(@"-----%@----%d" , [NSThread currentThread].name, i); // 每执行一次,线程暂停0.5秒 [NSThread sleepForTimeInterval:0.5]; } } - (IBAction)cancelThread:(id)sender { // 取消thread线程,调用该方法后,thread的isCancelled方法将会返回NO [thread cancel]; // ① NSLog(@"按钮被触发"); }
运行结果如下:
2015-12-17 07:41:09.370 ThreadCancel[17871:3305376] ---------0 2015-12-17 07:41:09.876 ThreadCancel[17871:3305376] ---------1 2015-12-17 07:41:10.376 ThreadCancel[17871:3305376] ---------2 2015-12-17 07:41:10.880 ThreadCancel[17871:3305376] ---------3 2015-12-17 07:41:11.384 ThreadCancel[17871:3305376] ---------4 2015-12-17 07:41:11.476 ThreadCancel[17871:3305290] 按钮被触发 2015-12-17 07:41:11.887 ThreadCancel[17871:3305376] 线程已经终止
线程睡眠
如果需要让当前正在执行的线程暂停一段时间,并进入阻塞状态,则可通过调用NSThread类的静态。 sleepXxx方法来完成。NSThread类提供了如下两个控制线程暂停的类方法。
1,
+(void)sleepUntilDate:(NSDate *)aDate:让当前正在执行的线程暂停到aDate代表的时间,并进入阻塞状态。
2,
+(void)sleepForTimeInterval:(NSTimeInterval)ti:让当前正在执行的线程暂停ti秒,并进入阻塞状态。
当当前线程调用sleepXxx方法进入阻塞状态后,在其睡眠时间段内,该线程不会获得执行的机会,即使系统中没有其他可执行的线程,处于阻塞状态的线程也不会执行,因此sleepXxx方法常用来暂停线程的执行。
演示代码:
[NSThread sleepForTimeInterval:0.5];
用于控制当前正在执行的线程暂停0.5秒。
改变线程优先级
每个线程执行时都具有一定的优先级,优先级高的线程优先获得较多的执行机会,而优先级低的线程则获得较少的执行机会。每个线程默认的优先级为0.5。
NSThread 提供了如下实例方法和类方法来设置获取线程的优先级。
+threadPriority:该类方法获取当前正在执行的 线程的优先级。
-threadPriority:该实例方法获取调用该方法的线程对象的优先级。
+setThreadPriority:(double)priority:该类方法用于设置当前正在执行的线程的优先级。
-setThreadPriority:(double)priority该实例方法用于设置该方法的线程对象的优先级。
在上面方法中,setThreadPriority:(double)priority 方法的参数可以是 一个double类型的浮点数,范围为0.0~1.0 ,其中1.0代表最高优先级,0.0代表最低优先级。
演示代码:
- (void)viewDidLoad { [super viewDidLoad]; NSLog(@"UI线程的优先级为:%g" , [NSThread threadPriority]); // 创建第一个线程对象 NSThread* thread1 = [[NSThread alloc] initWithTarget:self selector:@selector(run) object:nil]; // 设置第一个线程对象的名字 thread1.name = @"线程A"; NSLog(@"线程A的优先级为:%g" , thread1.threadPriority); // 设置使用最低优先级 thread1.threadPriority = 0.0; // 创建第二个线程对象 NSThread* thread2 = [[NSThread alloc] initWithTarget:self selector:@selector(run) object:nil]; // 设置第二个线程对象的名字 thread2.name = @"线程B"; NSLog(@"线程B的优先级为:%g" , thread2.threadPriority); // 设置使用最高优先级 thread2.threadPriority = 1.0; // 启动2个线程 [thread1 start]; [thread2 start]; } - (void)run { for(int i = 0 ; i < 100 ; i++) { NSLog(@"-----%@----%d" , [NSThread currentThread].name, i); } }
运行结果如下:
2015-12-17 10:31:07.160 PriorityTest[18084:3343387] UI线程的优先级为:0.5 2015-12-17 10:31:07.160 PriorityTest[18084:3343387] 线程A的优先级为:0.5 2015-12-17 10:31:07.160 PriorityTest[18084:3343387] 线程B的优先级为:0.5 2015-12-17 10:31:07.161 PriorityTest[18084:3343516] -----线程B----0 2015-12-17 10:31:07.161 PriorityTest[18084:3343516] -----线程B----1 2015-12-17 10:31:07.161 PriorityTest[18084:3343516] -----线程B----2 2015-12-17 10:31:07.161 PriorityTest[18084:3343516] -----线程B----3 2015-12-17 10:31:07.161 PriorityTest[18084:3343516] -----线程B----4 2015-12-17 10:31:07.161 PriorityTest[18084:3343516] -----线程B----5 2015-12-17 10:31:07.162 PriorityTest[18084:3343516] -----线程B----6 2015-12-17 10:31:07.162 PriorityTest[18084:3343516] -----线程B----7 2015-12-17 10:31:07.162 PriorityTest[18084:3343516] -----线程B----8 2015-12-17 10:31:07.163 PriorityTest[18084:3343516] -----线程B----9 2015-12-17 10:31:07.163 PriorityTest[18084:3343516] -----线程B----10 2015-12-17 10:31:07.163 PriorityTest[18084:3343516] -----线程B----11 2015-12-17 10:31:07.163 PriorityTest[18084:3343516] -----线程B----12 2015-12-17 10:31:07.164 PriorityTest[18084:3343516] -----线程B----13 2015-12-17 10:31:07.164 PriorityTest[18084:3343516] -----线程B----14 2015-12-17 10:31:07.166 PriorityTest[18084:3343516] -----线程B----15 2015-12-17 10:31:07.166 PriorityTest[18084:3343516] -----线程B----16 2015-12-17 10:31:07.166 PriorityTest[18084:3343516] -----线程B----17 2015-12-17 10:31:07.166 PriorityTest[18084:3343516] -----线程B----18 2015-12-17 10:31:07.166 PriorityTest[18084:3343516] -----线程B----19 2015-12-17 10:31:07.166 PriorityTest[18084:3343516] -----线程B----20 2015-12-17 10:31:07.166 PriorityTest[18084:3343516] -----线程B----21 2015-12-17 10:31:07.167 PriorityTest[18084:3343516] -----线程B----22 2015-12-17 10:31:07.168 PriorityTest[18084:3343516] -----线程B----23 2015-12-17 10:31:07.168 PriorityTest[18084:3343516] -----线程B----24 2015-12-17 10:31:07.168 PriorityTest[18084:3343516] -----线程B----25 2015-12-17 10:31:07.168 PriorityTest[18084:3343516] -----线程B----26 2015-12-17 10:31:07.168 PriorityTest[18084:3343516] -----线程B----27 2015-12-17 10:31:07.168 PriorityTest[18084:3343516] -----线程B----28 2015-12-17 10:31:07.169 PriorityTest[18084:3343516] -----线程B----29 2015-12-17 10:31:07.169 PriorityTest[18084:3343516] -----线程B----30 2015-12-17 10:31:07.169 PriorityTest[18084:3343516] -----线程B----31 2015-12-17 10:31:07.170 PriorityTest[18084:3343516] -----线程B----32 2015-12-17 10:31:07.170 PriorityTest[18084:3343516] -----线程B----33 2015-12-17 10:31:07.170 PriorityTest[18084:3343516] -----线程B----34 2015-12-17 10:31:07.170 PriorityTest[18084:3343516] -----线程B----35 2015-12-17 10:31:07.170 PriorityTest[18084:3343516] -----线程B----36 2015-12-17 10:31:07.170 PriorityTest[18084:3343516] -----线程B----37 2015-12-17 10:31:07.170 PriorityTest[18084:3343516] -----线程B----38 2015-12-17 10:31:07.170 PriorityTest[18084:3343516] -----线程B----39 2015-12-17 10:31:07.171 PriorityTest[18084:3343516] -----线程B----40 2015-12-17 10:31:07.171 PriorityTest[18084:3343516] -----线程B----41 2015-12-17 10:31:07.171 PriorityTest[18084:3343516] -----线程B----42 2015-12-17 10:31:07.171 PriorityTest[18084:3343516] -----线程B----43 2015-12-17 10:31:07.171 PriorityTest[18084:3343516] -----线程B----44 2015-12-17 10:31:07.171 PriorityTest[18084:3343516] -----线程B----45 2015-12-17 10:31:07.171 PriorityTest[18084:3343516] -----线程B----46 2015-12-17 10:31:07.171 PriorityTest[18084:3343516] -----线程B----47 2015-12-17 10:31:07.172 PriorityTest[18084:3343516] -----线程B----48 2015-12-17 10:31:07.172 PriorityTest[18084:3343516] -----线程B----49 2015-12-17 10:31:07.172 PriorityTest[18084:3343516] -----线程B----50 2015-12-17 10:31:07.172 PriorityTest[18084:3343516] -----线程B----51 2015-12-17 10:31:07.172 PriorityTest[18084:3343516] -----线程B----52 2015-12-17 10:31:07.172 PriorityTest[18084:3343516] -----线程B----53 2015-12-17 10:31:07.172 PriorityTest[18084:3343516] -----线程B----54 2015-12-17 10:31:07.172 PriorityTest[18084:3343516] -----线程B----55 2015-12-17 10:31:07.172 PriorityTest[18084:3343516] -----线程B----56 2015-12-17 10:31:07.172 PriorityTest[18084:3343516] -----线程B----57 2015-12-17 10:31:07.173 PriorityTest[18084:3343516] -----线程B----58 2015-12-17 10:31:07.173 PriorityTest[18084:3343516] -----线程B----59 2015-12-17 10:31:07.173 PriorityTest[18084:3343516] -----线程B----60 2015-12-17 10:31:07.173 PriorityTest[18084:3343516] -----线程B----61 2015-12-17 10:31:07.173 PriorityTest[18084:3343516] -----线程B----62 2015-12-17 10:31:07.173 PriorityTest[18084:3343516] -----线程B----63 2015-12-17 10:31:07.173 PriorityTest[18084:3343516] -----线程B----64 2015-12-17 10:31:07.174 PriorityTest[18084:3343516] -----线程B----65 2015-12-17 10:31:07.174 PriorityTest[18084:3343516] -----线程B----66 2015-12-17 10:31:07.174 PriorityTest[18084:3343516] -----线程B----67 2015-12-17 10:31:07.174 PriorityTest[18084:3343516] -----线程B----68 2015-12-17 10:31:07.174 PriorityTest[18084:3343516] -----线程B----69 2015-12-17 10:31:07.174 PriorityTest[18084:3343516] -----线程B----70 2015-12-17 10:31:07.174 PriorityTest[18084:3343516] -----线程B----71 2015-12-17 10:31:07.174 PriorityTest[18084:3343516] -----线程B----72 2015-12-17 10:31:07.174 PriorityTest[18084:3343516] -----线程B----73 2015-12-17 10:31:07.174 PriorityTest[18084:3343516] -----线程B----74 2015-12-17 10:31:07.175 PriorityTest[18084:3343516] -----线程B----75 2015-12-17 10:31:07.175 PriorityTest[18084:3343516] -----线程B----76 2015-12-17 10:31:07.175 PriorityTest[18084:3343516] -----线程B----77 2015-12-17 10:31:07.175 PriorityTest[18084:3343516] -----线程B----78 2015-12-17 10:31:07.175 PriorityTest[18084:3343516] -----线程B----79 2015-12-17 10:31:07.175 PriorityTest[18084:3343516] -----线程B----80 2015-12-17 10:31:07.175 PriorityTest[18084:3343516] -----线程B----81 2015-12-17 10:31:07.175 PriorityTest[18084:3343516] -----线程B----82 2015-12-17 10:31:07.175 PriorityTest[18084:3343516] -----线程B----83 2015-12-17 10:31:07.175 PriorityTest[18084:3343516] -----线程B----84 2015-12-17 10:31:07.175 PriorityTest[18084:3343516] -----线程B----85 2015-12-17 10:31:07.176 PriorityTest[18084:3343516] -----线程B----86 2015-12-17 10:31:07.176 PriorityTest[18084:3343516] -----线程B----87 2015-12-17 10:31:07.176 PriorityTest[18084:3343516] -----线程B----88 2015-12-17 10:31:07.176 PriorityTest[18084:3343516] -----线程B----89 2015-12-17 10:31:07.176 PriorityTest[18084:3343516] -----线程B----90 2015-12-17 10:31:07.176 PriorityTest[18084:3343516] -----线程B----91 2015-12-17 10:31:07.176 PriorityTest[18084:3343516] -----线程B----92 2015-12-17 10:31:07.176 PriorityTest[18084:3343516] -----线程B----93 2015-12-17 10:31:07.176 PriorityTest[18084:3343516] -----线程B----94 2015-12-17 10:31:07.177 PriorityTest[18084:3343515] -----线程A----0 2015-12-17 10:31:07.188 PriorityTest[18084:3343516] -----线程B----95 2015-12-17 10:31:07.192 PriorityTest[18084:3343516] -----线程B----96 2015-12-17 10:31:07.192 PriorityTest[18084:3343516] -----线程B----97 2015-12-17 10:31:07.192 PriorityTest[18084:3343516] -----线程B----98 2015-12-17 10:31:07.192 PriorityTest[18084:3343516] -----线程B----99 2015-12-17 10:31:07.193 PriorityTest[18084:3343515] -----线程A----1 2015-12-17 10:31:07.194 PriorityTest[18084:3343515] -----线程A----2 2015-12-17 10:31:07.194 PriorityTest[18084:3343515] -----线程A----3 2015-12-17 10:31:07.195 PriorityTest[18084:3343515] -----线程A----4 2015-12-17 10:31:07.195 PriorityTest[18084:3343515] -----线程A----5 2015-12-17 10:31:07.195 PriorityTest[18084:3343515] -----线程A----6 2015-12-17 10:31:07.195 PriorityTest[18084:3343515] -----线程A----7 2015-12-17 10:31:07.195 PriorityTest[18084:3343515] -----线程A----8 2015-12-17 10:31:07.196 PriorityTest[18084:3343515] -----线程A----9 2015-12-17 10:31:07.196 PriorityTest[18084:3343515] -----线程A----10 2015-12-17 10:31:07.196 PriorityTest[18084:3343515] -----线程A----11 2015-12-17 10:31:07.196 PriorityTest[18084:3343515] -----线程A----12 2015-12-17 10:31:07.197 PriorityTest[18084:3343515] -----线程A----13 2015-12-17 10:31:07.197 PriorityTest[18084:3343515] -----线程A----14 2015-12-17 10:31:07.198 PriorityTest[18084:3343515] -----线程A----15 2015-12-17 10:31:07.198 PriorityTest[18084:3343515] -----线程A----16 2015-12-17 10:31:07.198 PriorityTest[18084:3343515] -----线程A----17 2015-12-17 10:31:07.198 PriorityTest[18084:3343515] -----线程A----18 2015-12-17 10:31:07.199 PriorityTest[18084:3343515] -----线程A----19 2015-12-17 10:31:07.199 PriorityTest[18084:3343515] -----线程A----20 2015-12-17 10:31:07.199 PriorityTest[18084:3343515] -----线程A----21 2015-12-17 10:31:07.199 PriorityTest[18084:3343515] -----线程A----22 2015-12-17 10:31:07.200 PriorityTest[18084:3343515] -----线程A----23 2015-12-17 10:31:07.200 PriorityTest[18084:3343515] -----线程A----24 2015-12-17 10:31:07.200 PriorityTest[18084:3343515] -----线程A----25 2015-12-17 10:31:07.200 PriorityTest[18084:3343515] -----线程A----26 2015-12-17 10:31:07.201 PriorityTest[18084:3343515] -----线程A----27 2015-12-17 10:31:07.201 PriorityTest[18084:3343515] -----线程A----28 2015-12-17 10:31:07.201 PriorityTest[18084:3343515] -----线程A----29 2015-12-17 10:31:07.202 PriorityTest[18084:3343515] -----线程A----30 2015-12-17 10:31:07.202 PriorityTest[18084:3343515] -----线程A----31 2015-12-17 10:31:07.202 PriorityTest[18084:3343515] -----线程A----32 2015-12-17 10:31:07.202 PriorityTest[18084:3343515] -----线程A----33 2015-12-17 10:31:07.203 PriorityTest[18084:3343515] -----线程A----34 2015-12-17 10:31:07.203 PriorityTest[18084:3343515] -----线程A----35 2015-12-17 10:31:07.203 PriorityTest[18084:3343515] -----线程A----36 2015-12-17 10:31:07.203 PriorityTest[18084:3343515] -----线程A----37 2015-12-17 10:31:07.204 PriorityTest[18084:3343515] -----线程A----38 2015-12-17 10:31:07.204 PriorityTest[18084:3343515] -----线程A----39 2015-12-17 10:31:07.204 PriorityTest[18084:3343515] -----线程A----40 2015-12-17 10:31:07.205 PriorityTest[18084:3343515] -----线程A----41 2015-12-17 10:31:07.205 PriorityTest[18084:3343515] -----线程A----42 2015-12-17 10:31:07.205 PriorityTest[18084:3343515] -----线程A----43 2015-12-17 10:31:07.205 PriorityTest[18084:3343515] -----线程A----44 2015-12-17 10:31:07.206 PriorityTest[18084:3343515] -----线程A----45 2015-12-17 10:31:07.206 PriorityTest[18084:3343515] -----线程A----46 2015-12-17 10:31:07.206 PriorityTest[18084:3343515] -----线程A----47 2015-12-17 10:31:07.206 PriorityTest[18084:3343515] -----线程A----48 2015-12-17 10:31:07.207 PriorityTest[18084:3343515] -----线程A----49 2015-12-17 10:31:07.207 PriorityTest[18084:3343515] -----线程A----50 2015-12-17 10:31:07.207 PriorityTest[18084:3343515] -----线程A----51 2015-12-17 10:31:07.208 PriorityTest[18084:3343515] -----线程A----52 2015-12-17 10:31:07.208 PriorityTest[18084:3343515] -----线程A----53 2015-12-17 10:31:07.208 PriorityTest[18084:3343515] -----线程A----54 2015-12-17 10:31:07.208 PriorityTest[18084:3343515] -----线程A----55 2015-12-17 10:31:07.209 PriorityTest[18084:3343515] -----线程A----56 2015-12-17 10:31:07.209 PriorityTest[18084:3343515] -----线程A----57 2015-12-17 10:31:07.211 PriorityTest[18084:3343515] -----线程A----58 2015-12-17 10:31:07.213 PriorityTest[18084:3343515] -----线程A----59 2015-12-17 10:31:07.214 PriorityTest[18084:3343515] -----线程A----60 2015-12-17 10:31:07.214 PriorityTest[18084:3343515] -----线程A----61 2015-12-17 10:31:07.214 PriorityTest[18084:3343515] -----线程A----62 2015-12-17 10:31:07.214 PriorityTest[18084:3343515] -----线程A----63 2015-12-17 10:31:07.215 PriorityTest[18084:3343515] -----线程A----64 2015-12-17 10:31:07.215 PriorityTest[18084:3343515] -----线程A----65 2015-12-17 10:31:07.215 PriorityTest[18084:3343515] -----线程A----66 2015-12-17 10:31:07.215 PriorityTest[18084:3343515] -----线程A----67 2015-12-17 10:31:07.216 PriorityTest[18084:3343515] -----线程A----68 2015-12-17 10:31:07.216 PriorityTest[18084:3343515] -----线程A----69 2015-12-17 10:31:07.216 PriorityTest[18084:3343515] -----线程A----70 2015-12-17 10:31:07.218 PriorityTest[18084:3343515] -----线程A----71 2015-12-17 10:31:07.218 PriorityTest[18084:3343515] -----线程A----72 2015-12-17 10:31:07.220 PriorityTest[18084:3343515] -----线程A----73 2015-12-17 10:31:07.307 PriorityTest[18084:3343515] -----线程A----74 2015-12-17 10:31:07.308 PriorityTest[18084:3343515] -----线程A----75 2015-12-17 10:31:07.308 PriorityTest[18084:3343515] -----线程A----76 2015-12-17 10:31:07.309 PriorityTest[18084:3343515] -----线程A----77 2015-12-17 10:31:07.309 PriorityTest[18084:3343515] -----线程A----78 2015-12-17 10:31:07.309 PriorityTest[18084:3343515] -----线程A----79 2015-12-17 10:31:07.309 PriorityTest[18084:3343515] -----线程A----80 2015-12-17 10:31:07.310 PriorityTest[18084:3343515] -----线程A----81 2015-12-17 10:31:07.310 PriorityTest[18084:3343515] -----线程A----82 2015-12-17 10:31:07.310 PriorityTest[18084:3343515] -----线程A----83 2015-12-17 10:31:07.310 PriorityTest[18084:3343515] -----线程A----84 2015-12-17 10:31:07.310 PriorityTest[18084:3343515] -----线程A----85 2015-12-17 10:31:07.311 PriorityTest[18084:3343515] -----线程A----86 2015-12-17 10:31:07.311 PriorityTest[18084:3343515] -----线程A----87 2015-12-17 10:31:07.311 PriorityTest[18084:3343515] -----线程A----88 2015-12-17 10:31:07.315 PriorityTest[18084:3343515] -----线程A----89 2015-12-17 10:31:07.316 PriorityTest[18084:3343515] -----线程A----90 2015-12-17 10:31:07.319 PriorityTest[18084:3343515] -----线程A----91 2015-12-17 10:31:07.319 PriorityTest[18084:3343515] -----线程A----92 2015-12-17 10:31:07.321 PriorityTest[18084:3343515] -----线程A----93 2015-12-17 10:31:07.321 PriorityTest[18084:3343515] -----线程A----94 2015-12-17 10:31:07.322 PriorityTest[18084:3343515] -----线程A----95 2015-12-17 10:31:07.322 PriorityTest[18084:3343515] -----线程A----96 2015-12-17 10:31:07.322 PriorityTest[18084:3343515] -----线程A----97 2015-12-17 10:31:07.322 PriorityTest[18084:3343515] -----线程A----98 2015-12-17 10:31:07.323 PriorityTest[18084:3343515] -----线程A----99
可以看到UI线程的优先级为0.5,以后用到网络请求,需要多线程的时候,我们可以所用的线程优先级低于0.5就好了哦。这个很重要哦,用的好的话,用户体验会比较好。
相关文章推荐
- Python3写爬虫(四)多线程实现数据爬取
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 不可修补的 iOS 漏洞可能导致 iPhone 4s 到 iPhone X 永久越狱
- iOS 12.4 系统遭黑客破解,漏洞危及数百万用户
- 每日安全资讯:NSO,一家专业入侵 iPhone 的神秘公司
- [转][源代码]Comex公布JailbreakMe 3.0源代码
- C#实现多线程的同步方法实例分析
- C#线程间不能调用剪切板的解决方法
- 浅谈chuck-lua中的多线程
- C#简单多线程同步和优先权用法实例
- C#多线程学习之(四)使用线程池进行多线程的自动管理
- C#多线程编程中的锁系统(三)
- C#线程同步的三类情景分析
- C#获取进程或线程相关信息的方法
- C#停止线程的方法
- C#子线程更新UI控件的方法实例总结
- C#多线程学习之(六)互斥对象用法实例
- C#线程队列用法实例分析