Thread 多线程

(不介绍 什么是线程、线程和进程的区别、多线程有什么用、什么是串行、什么是并行)

线程方案

  • Pthreads 基于C语言的
  • NSThread
  • GCD
  • NSOperation & NSOperationQueue

Thread

  1. 创建并启动
    Objective-C
//创建线程 【object :线程调用方法传递的参数】
NSThread *thread = [[NSThread alloc] initWithTarget:self selector:@selector(run:) object:@"Cancer"];
//开启线程
[thread start];

Swift

//创建线程 【object :线程调用方法传递的参数】
let thread = NSThread(target: self, selector: "run:", object: "Cancer")
//启动线程
thread.start()
  1. 创建并自动启动
    Objective-C
//创建并自动启动  【detach使什么分开】
[NSThread detachNewThreadSelector:@selector(run:) toTarget:self withObject:@"Cancer"];

Swift

//创建并自动启动  【detach使什么分开】
 NSThread.detachNewThreadSelector("run:", toTarget: self, withObject: "Cancer")
Thread还有很多其他的方法
//取消线程
- (void)cancel;
//启动线程
- (void)start;
//判断某个线程的状态的属性
@property (readonly, getter=isExecuting) BOOL executing;
@property (readonly, getter=isFinished) BOOL finished;
@property (readonly, getter=isCancelled) BOOL cancelled;
//设置和获取线程名字
-(void)setName:(NSString *)n;
-(NSString *)name;
//获取当前线程信息
+ (NSThread *)currentThread;
//获取主线程信息
+ (NSThread *)mainThread;
//使当前线程暂停一段时间
+ (void)sleepForTimeInterval:(NSTimeInterval)time;
//暂停到某个时刻
+ (void)sleepUntilDate:(NSDate *)date;

SWIFT
Swift的方法名字和OC的方法名都一样,我就不浪费空间列举出来了。

其实,NSThread 用起来也挺简单的,因为它就那几种方法。同时,我们也只有在一些非常简单的场景才会用 NSThread, 毕竟它还不够智能,不能优雅地处理多线程中的其他高级概念。所以接下来要说的内容才是重点。

你可能感兴趣的:(Thread 多线程)