IOS之NSThread

初始化:

1.动态方法

- (id)initWithTarget:(id)target selector:(SEL)selector object:(id)argument;

// 初始化线程
NSThread *thread = [[NSThread alloc] initWithTarget:self selector:@selector(run) object:nil];
// 设置线程的优先级(0.0 - 1.0,1.0最高级)
thread.threadPriority = 1;
// 开启线程
[thread start];

2.静态方法

+ (void)detachNewThreadSelector:(SEL)selector toTarget:(id)target withObject:(id)argument;

[NSThread detachNewThreadSelector:@selector(run) toTarget:self withObject:nil];
// 调用完毕后,会马上创建并开启新线程

3.隐式创建线程

[self performSelectorInBackground:@selector(run) withObject:nil];

获取当前线程

NSThread *current = [NSThread currentThread];

获取主线程

NSThread *main = [NSThread mainThread];

暂停当前线程

// 暂停2s
[NSThread sleepForTimeInterval:2];

// 或者
NSDate *date = [NSDate dateWithTimeInterval:2 sinceDate:[NSDate date]];
[NSThread sleepUntilDate:date];

线程间的通信

1.在指定线程上执行操作

[self performSelector:@selector(run) onThread:thread withObject:nil waitUntilDone:YES];

2.在主线程上执行操作

[self performSelectorOnMainThread:@selector(run) withObject:nil waitUntilDone:YES];

3.在当前线程执行操作

[self performSelector:@selector(run) withObject:nil];
时间: 2024-09-30 02:27:54

IOS之NSThread的相关文章

iOS多线程 NSThread/GCD/NSOperationQueue

http://www.cnblogs.com/kenshincui/p/3983982.html iOS开发系列--并行开发其实很容易 2014-09-20 23:34 by KenshinCui, 9738 阅读, 19 评论, 收藏,  编辑 --多线程开发 概览 大家都知道,在开发过程中应该尽可能减少用户等待时间,让程序尽可能快的完成运算.可是无论是哪种语言开发的程序最终往往转换成汇编语言进而解释成机器码来执行.但是机器码是按顺序执行的,一个复杂的多步操作只能一步步按顺序逐个执行.改变这种

iOS —— 多线程NSThread

一.NSThread 1. 介绍 iOS 中的线程对象,将一个线程封装为一个 OC 对象,可以设置线程名.优先级等属性 2. 常用方法 二.示例 1. 创建线程 // 1. 获得主线程 NSThread * mainThread = [NSThread mainThread]; NSLog(@"main --- %@", mainThread); // 2. 获得当前线程(也就是主线程) NSThread * currentThread = [NSThread currentThrea

iOS 多线程 NSThread NSOperation NSOperationQueue GCD 线程锁 线程阻塞

iPhone中的线程应用并不是无节制的,官方给出的资料显示,iPhone OS下的主线程的堆栈大小是1M,第二个线程开始就是512KB,并且该值不能通过编译器开关或线程API函数来更改,只有主线程有直接修改UI的能力,所以一些数据层面可以开辟线程来操作进行,iOS线程的操作方法有NSThread NSOperation NSOperationQueue GCD: NSThread方法有 //NSThread自动 - (IBAction)didClickNSThreadAutoButtonActi

IOS多线程--NSThread

Pthread 声明 pthread_t cThread; 创建子线程  pthread_create(&cThread, NULL, working, NULL); 1.C方法,跨平台的创建子线程,支持Unix,Linux,MacOS,iOS 2.需要引入#import <pthread.h> 3.优点:能开启一个线程,其他 几乎没有 4.缺点:太C了,不友好 NSThread(子线程) 1.NSThread是 cocoa(MacOS,iOS)中一个轻量级的线程对象 2.NSThre

iOS 多线程NSThread理解与场景示例

NSThread是相对GCD和NSOperationQuene而言,比较轻量级的一种多线程处理方式. 但同时,它的弊端就是需要自己管理线程的生命周期,以及线程同步:而另外两种不需要自己管理. 常见方法介绍: 一.获取当前线程 NSThread *current = [NSThread currentThread]; 二.获取主线程 NSThread *main = [NSThread mainThread]; 三.NSThread的创建 1 // 初始化线程 2 NSThread *thread

iOS中NSThread(主线程,子线程)

#import "AppDelegate.h" @interface AppDelegate () { NSInteger _totalTickests; } @property (nonatomic, retain) NSLock *lock; @end @implementation AppDelegate - (void)task1 { NSLog(@"当前线程:%@,是否是主线程:%d",[NSThread currentThread],[[NSThread

iOS多线程-NSOperation

前面了iOS的NSThread方法来实现多线程,这篇就简单的讲讲NSOperation和NSOperationQueue. NSOperation是一个抽象类,定义一个要执行的任务.NSOperationQueue是一个任务队列,帮助对NSOperation所定义的任务进行管理.当任务加入到任务队列后,会自动按照优先级和依赖关系自动运行. NSOperation是不能直接使用的,我们必须使用继承类.iOS提供了两个实现好的子类,分别是NSInvocationOperation和NSBlockOp

iOS开发系列--并行开发其实很容易

--多线程开发 概览 大家都知道,在开发过程中应该尽可能减少用户等待时间,让程序尽可能快的完成运算.可是无论是哪种语言开发的程序最终往往转换成汇编语言进而解释成机器码来执行.但是机器码是按顺序执行的,一个复杂的多步操作只能一步步按顺序逐个执行.改变这种状况可以从两个角度出发:对于单核处理器,可以将多个步骤放到不同的线程,这样一来用户完成UI操作后其他后续任务在其他线程中,当CPU空闲时会继续执行,而此时对于用户而言可以继续进行其他操作:对于多核处理器,如果用户在UI线程中完成某个操作之后,其他后

iOS-----多线程之NSThread

多线程 iOS平台提供了非常优秀的多线程支持,程序可以通过非常简单的方式来启动多线程,iOS平台不仅提供了NSThread类来创建多线程,还提供了GCD方式来简化多线程编程,提供了NSOperation和NSOperationQueue支持多线程编程.总之,iOS已经尽力降低开发多线程应用的繁琐,努力让开发者能轻松.简单地开发多线程应用. 线程概述 几乎所有的操作系统都支持同时运行多个任务,一个任务通常就是一个程序,每个运行中的程序就是一个进程.当一个程序运行时,内部可能包含了多个顺序执行流,每