关于多线程会有一系列如下:
多线程之概念解析

多线程之pthread, NSThread, NSOperation, GCD

多线程之NSThread

多线程之NSOperation

多线程之GCD一,创建线程

  • 动态创建
/**
动态创建
*/
- (void)dynamicCreateThread {
// 动态创建
// 动态创建的线程,必须调用 start ,线程才会跑起来
NSThread *thread = [[NSThread alloc] initWithTarget:self selector:@selector(dynamicRun:) object:@];
thread.threadPriority = ;//0-1,1的优先级最高
thread.name = @"dynamic thread";
[thread start]; // iOS10 以后新添加的方法
NSThread *newThread = [[NSThread alloc] initWithBlock:^{
NSLog(@"block operation");
}];
[newThread start];
} - (void)dynamicRun:(NSNumber *)index {
NSLog(@"thread = %@", [NSThread currentThread]);
NSLog(@"index = %@", index);
NSLog(@"dynamic run");
NSLog(@"name = %@", [NSThread currentThread].name);
}
  • 静态创建

/** 静态创建 */ - (void)staticCreateThread { // 静态创建 [NSThread detachNewThreadSelector:@selector(staticRun) toTarget:self withObject:nil]; // ios 10以后才出现 [NSThread detachNewThreadWithBlock:^{ [self staticRun]; }]; }

  • 隐式创建
/**
隐式创建
*/
- (void)backgroundCreateThread {
[self performSelectorInBackground:@selector(backgroundRun) withObject:nil];
}
  • 线程通信
- (void)performSelectorOnMainThread:(SEL)aSelector withObject:(nullable id)arg waitUntilDone:(BOOL)wait;

- (void)performSelector:(SEL)aSelector onThread:(NSThread *)thr withObject:(nullable id)arg waitUntilDone:(BOOL)wait;

二.属性

 @property (class, readonly, strong) NSThread *currentThread;//获取当前线程

@property (nullable, copy) NSString *name // 线程名
@property double threadPriority //优先级,0-1, 1的优先级最高
@property NSUInteger stackSize // 线程所占用内存
@property (readonly) BOOL isMainThread // 是否为主线程

状态相关

@property (readonly, getter=isExecuting) BOOL executing
@property (readonly, getter=isFinished) BOOL finished
@property (readonly, getter=isCancelled) BOOL cancelled

三.API

+ (BOOL)isMultiThreaded;// 判断当前线程是否是多线程

//线程操作

- (void)start;

- (void)cancel;

+ (void)exit;

- (void)main;// thread body method

// 线程阻塞

+ (void)sleepUntilDate:(NSDate *)date;

+ (void)sleepForTimeInterval:(NSTimeInterval)ti;

 
// 获取线程
@property (class, readonly, strong) NSThread *currentThread;//获取当前线程
@property (class, readonly, strong) NSThread *mainThread;//获取主线程

四.自定义NSThread

  注意:  通过静态方法创建的 thread不会执行 main 方法

  


多线程之NSThread的更多相关文章

  1. iOS-多线程之NSThread详解

    前言 线程是用来执行任务的,线程彻底执行完任务A才能去执行任务B.为了同时执行两个任务,产生了多线程. 我打开一个视频软件,我开辟一个线程A让它执行下载任务,我开辟一个线程B,用来播放视频.我开辟两个 ...

  2. iOS多线程之NSThread使用

    iOS中的多线程技术 我们在iOS开发项目过程中,为了解决UI界面操作不被耗时操作阻塞,我们会使用到多线程技术.在iOS开发中,我们主要会用到三种多线程操作技术:NSThread,NSOperatio ...

  3. iOS-----多线程之NSThread

    多线程 iOS平台提供了非常优秀的多线程支持,程序可以通过非常简单的方式来启动多线程,iOS平台不仅提供了NSThread类来创建多线程,还提供了GCD方式来简化多线程编程,提供了NSOperatio ...

  4. iOS多线程之NSThread详解

    在iOS中每个进程启动后都会建立一个主线程(UI线程),这个线程是其他线程的父线程.由于iOS中除了主线程,其他子线程是独立于Cocoa Touch的,所以只有主线程可以更新UI界面.iOS多线程的使 ...

  5. 【原】iOS多线程之NSThread、NSOperationQueue、NSObject和GCD的区别

    区别: Thread: 是这几种方式里面相对轻量级的,但也是使用起来最负责的,你需要自己管理thread的生命周期,线程之间的同步.线程共享同一应用程序的部分内存空间, 它们拥有对数据相同的访问权限. ...

  6. 多线程之NSThread和NSObject

    #pragma mark - NSThread实现多线程 /* // 获取当前线程 NSLog(@"currentThread = %@", [NSThread currentTh ...

  7. iOS开发笔记5:多线程之NSThread、NSOperation及GCD

    这篇主要总结下iOS开发中多线程的使用,多线程开发一般使用NSThread.NSOperation及GCD三种方式,常用GCD及NSOperation. 1.NSThread 创建线程主要有以下三种方 ...

  8. IOS多线程之NSThread

    参考:http://blog.csdn.net/totogo2010/article/details/8010231 1 简介 NSThread: 优点:NSThread 比其他两个轻量级 缺点:需要 ...

  9. iOS开发多线程之NSThread

    一.NSThread的属性与方法 1.NSThread 类方法 类方法,顾名思义通过类名直接调用的方法 1. + (void)detachNewThreadWithBlock:(void (^)(vo ...

随机推荐

  1. .NET CORE 微信小程序消息验证的坑

    进入微信小程序,点击开发->选择消息推送->扫码授权,填写必要参数 进入接口开发: /// <summary> /// 验证小程序 /// </summary> / ...

  2. android 发送邮件--实现 send email for android

    Android 发送邮件消息 用途:发送验证码,通过邮箱找回密码 不需要调用客户端直接使用代码进行发送 本项目使用到的jar包–本文结尾会附带下载链接 activation.jar additionn ...

  3. 基于Bitnami gitlab OVA包的gitlab 环境搭建

    前言 最近在折腾gitlab,本篇记录搭建的过程方便以后查找 环境 Windows server + VMware 安装 为方便本次我们直接采用Bitnami的VOA安装包(VOA格式可同时兼容Vir ...

  4. C#编程之自动实现的属性

    在 C# 3.0 及更高版本,当属性访问器中不需要任何其他逻辑时,自动实现的属性会使属性声明更加简洁.它们还允许客户端代码创建对象.当你声明以下示例中所示的属性时,编译器将创建仅可以通过该属性的 ge ...

  5. Anacodna之conda的使用

    yum install -y bunzip2 wget https://repo.continuum.io/archive/Anaconda2-5.0.1-Linux-x86_64.sh chmod ...

  6. PHP-1.数据库连接与登陆

    <?php //数据库信息 $servername = "localhost"; $username = "root"; $password = &quo ...

  7. module中module.exports与exports的区别(转)

    转https://cnodejs.org/topic/55ccace5b25bd72150842c0a require 用来加载代码,而 exports 和 module.exports 则用来导出代 ...

  8. helm安装MINIO文件服务器

    MinIO Quickstart Guide MinIO 是一个基于Apache License v2.0开源协议的对象存储服务.它兼容亚马逊S3云存储服务接口,非常适合于存储大容量非结构化的数据,例 ...

  9. python元类深入理解

    1.python 中的类 在python中,类也是一个对象,只不过这个对象拥有生成实例的能力,我们一般使用class XXX来定义一个类,在python解释器执行到这个地方的时候会自动创建出这个对象, ...

  10. HTTP_2_HTTP协议概要

    http协议概要 HTTP 通信对象 通信方式 通信状态 定位资源 节省通信量 超文本传输协议 客户端与服务器端 请求和响应 不保存状态(借助cookie) 请求URI keep-alive/pipe ...