多线程的技术总结

多线程技术总结

  1. performSelectorInBackground:withObject:

  2. NSThread 静态方法 + (void)detachNewThreadSelector:(SEL)selector toTarget:(id)target withObject:(id)argument;

  3. 创建NSThread对象,然后调用start方法来启动线程

//第⼀一种创建线程的⽅方法
[self performSelectorInBackground:@selector(handleTask)withObject:nil];

page1image3800 page1image4120

//第⼆二种创建线程的⽅方法

withObject:nil];
page1image5848

//第⼀一个参数:线程要执⾏行的任务 第⼆二个参数:线程要执⾏行的任务在哪个对象⾥里 第三个参数

page1image6536 page1image6696

是:在开启线程的时候 可以传递参数

//直接创建了⼀一个线程, 创建之后, 线程直接启动

page1image7872
[NSThread detachNewThreadSelector:@selector(handleTask) toTarget:self
page1image8560 page1image8720

//第三种创建线程的⽅方法

selector:@selector(handleTask) object:nil];

//2、给线程起⼀一个名字myThread.name = @"Qingyun";//3、需要⼿手动启动这个线程[myThread start];

page1image11296

//1、创建⼀一个线程对象(NSThread)

NSThread *myThread = [[NSThread alloc ]initWithTarget:self
page1image13512

4. 创建NSOperation子类对象,然后使用NSOPerationQueue来启动线程

//第四种创建线程的⽅方法

initWithTarget:self selector:@selector(handleTask) object:nil];

// 3、将操作对象,添加到队列⾥里, 需要注意的是:添加队列⾥里之后,线程就开始启动[queue addOperation:operation];

page1image16344

//1、创建⼀一个多线程的操作队列

NSOperationQueue *queue = [[NSOperationQueue alloc] init];

//2、创建⼀一个操作对象,这个操作对象主要功能是定义了线程需要执⾏行的执务

NSInvocationOperation *operation = [[NSInvocationOperation alloc]
page1image19616

5. 创建NSBlockOpertation对象,然后添加到NSOperationQuue来启动线程

page2image1224

//第五种创建线程的⽅方法

// [NSThread sleepForTimeInterval:10];
if ([thread isMainThread]) {
    NSLog(@"Peer thread.thread name is %@",thread.name);
[queue addOperation:blockOperation];

//1、创建⼀一个多线程的操作队列

NSOperationQueue *queue = [[NSOperationQueue alloc] init];

//2、创建⼀一个NSBlockOperation对象,block本⾝身就是线程要执⾏行的具体任务

NSBlockOperation *blockOperation = [NSBlockOperation
blockOperationWithBlock:^{
NSLog(@"do thing...");

// 当前线程休眠10

for (long i = 0; i < 50000; i++) {

}

NSLog(@"handle:%ld",i);
page2image10472

// 先拿到⼀一个线程对象,返回的是表⽰示当前线程的线程对象

page2image11120
NSThread *thread = [NSThread currentThread];
page2image11888

// 通过线程对象的⽅方法来判断是否是主线程, 如果是主线程则打印⼀一条是主线程的

page2image12576

⽇日志, 如果不是主线程则打印⼀一条是对等线程的⽇日志

page2image13224 page2image13384
NSLog(@"Main thread.");
page2image14032

}else

page2image14640

{

page2image15248 page2image15408

}

page2image16016
NSLog(@"Done.");
page2image16624

}];

page2image17232

// 3、将NSBlockOperation对象添加到队列⾥里

page2image17880
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值