IOS多线程之线程的创建

转载 2015年07月09日 15:53:49
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
     
    //创建线程的第一种方式
    NSThread *thread = [[NSThread alloc] initWithTarget:self selector:@selector(run:) object:@"universe"];
    [thread start];
    [thread release];
     
     
    //创建线程的第二种方式,NSThread类方法
    [NSThread detachNewThreadSelector:@selector(run:) toTarget:self withObject:@"yuzhou"];
     
     
    //创建线程的第三种方法  NSObject方法
    [self performSelectorInBackground:@selector(run:) withObject:@"nsobject thread"];
     
    //创建线程的第四种方式
    NSOperationQueue *oprationQueue = [[NSOperationQueue alloc] init];
    [oprationQueue addOperationWithBlock:^{
        //这个block语句块在子线程中执行
        NSLog(@"oprationQueue");
    }];
    [oprationQueue release];
     
    //第五种创建线程的方式
    NSOperationQueue *oprationQueue1 = [[NSOperationQueue alloc] init];
    oprationQueue1.maxConcurrentOperationCount = 1;//指定池子的并发数
     
    //NSOperation 相当于java中的runnable接口,继承自它的就相当一个任务
    NSInvocationOperation *invation = [[NSInvocationOperation alloc] initWithTarget:self selector:@selector(run:) object:@"invation"];
    [oprationQueue1 addOperation:invation];//将任务添加到池子里面,可以给池子添加多个任务,并且指定它的并发数
    [invation release];
     
    //第二个任务
    NSInvocationOperation *invation2 = [[NSInvocationOperation alloc] initWithTarget:self selector:@selector(run2:) object:@"invocation2"];
    invation2.queuePriority = NSOperationQueuePriorityHigh;//设置线程优先级
    [oprationQueue1 addOperation:invation2];
    [invation2 release];
     
    [oprationQueue1 release];
     
    //调用主线程,用来子线程和主线程交互,最后面的那个boolean参数,如果为yes就是等这个方法执行完了在执行后面的代码;如果为no的话,就是不管这个方法执行完了没有,接着往下走
    [self performSelectorOnMainThread:@selector(onMain) withObject:self waitUntilDone:YES];
     
    //---------------------GCD----------------------支持多核,高效率的多线程技术
    //创建多线程第六种方式
    dispatch_queue_t queue = dispatch_queue_create("name", NULL);
    //创建一个子线程
    dispatch_async(queue, ^{
        // 子线程code... ..
        NSLog(@"GCD多线程");
         
        //回到主线程
        dispatch_sync(dispatch_get_main_queue(), ^{//其实这个也是在子线程中执行的,只是把它放到了主线程的队列中
            Boolean isMain = [NSThread isMainThread];
            if (isMain) {
                NSLog(@"GCD主线程");
            }
        });
    });
     
     
    self.window.backgroundColor = [UIColor whiteColor];
    [self.window makeKeyAndVisible];
    return YES;
}
 
- (void)onMain
{
    Boolean b = [NSThread isMainThread];
    if (b) {
        NSLog(@"onMain;;%d",b);
    }
}
 
 
- (void) run:(NSString*)str
{
    NSLog(@"多线程运行:::%@",str);
}
- (void) run2:(NSString*)str
{
    NSLog(@"多线程运行:::%@",str);
}

iOS多线程几种不同方式简单使用

iOS多线程几种不同方式简单使用: 1、performSelector.... 2、NSThread 3、NSOperation 4、gcd...
  • lvdezhou
  • lvdezhou
  • 2015年11月09日 09:28
  • 2375

关于iOS多线程,你看我就够了(已更新

在这篇文章中,我将为你整理一下 iOS 开发中几种多线程方案,以及其使用方法和注意事项。当然也会给出几种多线程的案例,在实际使用中感受它们的区别。还有一点需要说明的是,这篇文章将会使用 Swift 和...
  • itianyi
  • itianyi
  • 2015年09月06日 10:18
  • 2369

iOS多线程及异步处理

概览 大家都知道,在开发过程中应该尽可能减少用户等待时间,让程序尽可能快的完成运算。可是无论是哪种语言开发的程序最终往往转换成汇编语言进而解释成机器码来执行。但是机器码是按顺序执行的,一个复杂的...
  • guobing19871024
  • guobing19871024
  • 2017年03月16日 14:29
  • 839

IOS多线程开发其实很简单

概览 大家都知道,在开发过程中应该尽可能减少用户等待时间,让程序尽可能快的完成运算。可是无论是哪种语言开发的程序最终往往转换成汇编语言进而解释成机器码来执行。但是机器码是按顺序执行的,一个复杂的多步...
  • shenjie12345678
  • shenjie12345678
  • 2015年03月09日 11:14
  • 76568

iOS的三种多线程技术 对比分析

1.iOS的三种多线程技术                     1.NSThread 每个NSThread对象对应一个线程,量级较轻(真正的多线程) 2.以下两点是苹果专门开发的“并发...
  • fhbystudy
  • fhbystudy
  • 2014年04月10日 17:07
  • 10529

Java创建多线程的三种方法

Java多线程实现方式主要有三种:继承Thread类、实现Runnable接口、使用ExecutorService、Callable、Future实现有返回结果的多线程。其中前两种方式线程执行完后都没...
  • u012843873
  • u012843873
  • 2016年05月04日 14:23
  • 749

linux下创建多线程执行

linux下创建多线程执行         线程(thread, 台湾称“执行绪”)是“进程”中某个单一顺序的控制流。也被称为轻量进程(lightweight processes)。...
  • laozhuxinlu
  • laozhuxinlu
  • 2016年06月29日 16:39
  • 3542

iOS 多线程研究一:六种创建多线程的方法

本文介绍多种多线程方法:xoxo_x总结 本文总结的几种多线程创建方法均为异步线程,除了最后GCD的同步线程外。第一种:NSThread *thread = [[NSThread alloc]ini...
  • Xoxo_x
  • Xoxo_x
  • 2017年02月27日 02:59
  • 1123

创建线程的三种方法

第一种方法:继承Thread类,重写run()方法,run()方法代表线程要执行的任务。 第二种方法:实现Runnable接口,重写run()方法,run()方法代表线程要执行的任务。 第三种方法:实...
  • baidu_21578557
  • baidu_21578557
  • 2016年04月16日 21:34
  • 5256

IOS三种多线程详解

iOS的三种多线程技术 1.NSThread 每个NSThread对象对应一个线程,量级较轻(真正的多线程) 2.以下两点是苹果专门开发的“并发”技术,使得程序员可以不再去关心线程的具体使...
  • MouXiaoxiong
  • MouXiaoxiong
  • 2016年08月16日 15:03
  • 1772
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:IOS多线程之线程的创建
举报原因:
原因补充:

(最多只允许输入30个字)