IOS NSThread

任何一个 iOS 应用程序都是由一个或者多个线程构成的。无论你是否使用了多线程编程技术,至少有 1 个 线程被创建。多线程就是为了提高引用程序的工作效率!避免阻塞主线程!当我们没有用任何多线程技术的话,默认情况下,是在程序的主线程中执行相关操作!(因此不要在主线程中实现耗时方法)。

比较简单,直接上代码。

 1 //
 2 //  ViewController.m
 3 //  CXNSThread
 4 //
 5 //  Created by ma c on 16/3/15.
 6 //  Copyright © 2016年 xubaoaichiyu. All rights reserved.
 7 //
 8 #import "ViewController.h"
 9 
10 @interface ViewController ()
11 
12 @end
13 
14 @implementation ViewController
15 
16 - (void)viewDidLoad {
17     [super viewDidLoad];
18 
19     /*
20      
21      常用方法
22      获取当前线程 NSThread * thread = [NSThread currentThread];
23      获取主线程 NSThread * main = [NSThread mainThread];
24      暂停多少秒 [NSThread sleepForTimeInterval:2];
25      暂停到什么时间段 [NSThread sleepUntilDate:2];
26      强制停止线程 [NSThread exit];(一旦线程停止 就不能再次开启任务)。
27      
28      */
29     /*
30      
31      线程间的通信
32      self performSelector:<#(SEL)#> withObject:<#(id)#> withObject:<#(id)#>
33      self performSelectorOnMainThread:<#(nonnull SEL)#> withObject:<#(nullable id)#> waitUntilDone:<#(BOOL)#>
34      self performSelector:<#(nonnull SEL)#> onThread:<#(nonnull NSThread *)#> withObject:<#(nullable id)#> waitUntilDone:<#(BOOL)#>
35      
36      */
37     /*
38      
39      优点:NSThread比其他两种对线程方案较轻量级,更直观的控制线程对象
40      
41      缺点:需要自己管理线程的生命周期,线程同步。线程同步对数据加锁会有一定开销。
42      ##(加锁)
43      
44      @synchronized(sel) {
45      <#statements#>
46      }
47      
48      ##
49      
50      */
51 
52         //初始化->动态方法
53     NSThread * threadOne = [[NSThread alloc]initWithTarget:self selector:@selector(threadOneAction) object:nil];
54     
55     //设置线程名称
56     threadOne.name = @"threadOne";
57     
58     //设置优先级(low ~ height)(0~1)
59     threadOne.threadPriority = 1;
60     
61     //开启线程
62     [threadOne start];
63     
64     //静态方法
65     [NSThread detachNewThreadSelector:@selector(threadTwoAction) toTarget:self withObject:nil];
66     
67     //隐式创建
68     [self performSelectorInBackground:@selector(threadThreeAction) withObject:nil];
69     
70     NSLog(@"Main->%@",[NSThread currentThread]);
71     
72 }
73 
74 -(void)threadOneAction{
75     
76     //log当前线程
77     NSLog(@"One->%@",[NSThread currentThread]);
78     
79 }
80 
81 -(void)threadTwoAction{
82     
83     NSLog(@"Two->%@",[NSThread currentThread]);
84     
85 }
86 
87 -(void)threadThreeAction{
88     
89     NSLog(@"Three->%@",[NSThread currentThread]);
90     
91 }
92 
93 - (void)didReceiveMemoryWarning {
94     [super didReceiveMemoryWarning];
95 
96 }
97 
98 @end

结果:

你可能感兴趣的:(IOS NSThread)