zoukankan      html  css  js  c++  java
  • 多线程

    //

    //  ViewController.m

    //  UI-NO-25

    //

    //  Created by Bruce on 15/8/27.

    //  Copyright (c) 2015年 Bruce. All rights reserved.

    //

    #import "ViewController.h"

    @interface ViewController ()

    @end

    @implementation ViewController

    - (void)viewDidLoad {

        [super viewDidLoad];

        

    //    不能直接使用Operation  是因为 它里面 没有可以直接操作的方法  只是一个基类(抽象类)

        NSInvocationOperation *invocation = [[NSInvocationOperation alloc]initWithTarget:self selector:@selector(act:) object:@"invocation"];

    //    如果单独使用Operation 必须手动启动

    //    [invocation start];

    //    Operation 默认在当前线程 去执行(同步执行)

        

        NSInvocationOperation *invocation1 = [[NSInvocationOperation alloc]initWithTarget:self selector:@selector(act:) object:@"invocation1"];

        //    如果单独使用Operation 必须手动启动

        

        NSInvocationOperation *invocation2 = [[NSInvocationOperation alloc]initWithTarget:self selector:@selector(act:) object:@"invocation2"];

        

        NSInvocationOperation *invocation3 = [[NSInvocationOperation alloc]initWithTarget:self selector:@selector(act:) object:@"invocation3"];

        

        NSInvocationOperation *invocation4 = [[NSInvocationOperation alloc]initWithTarget:self selector:@selector(act:) object:@"invocation4"];

        

    //    *****NSOperationQueue不用手动去启动线程 所以注释掉start

        

    //    [invocation1 start];

    //    Operation 默认在当前线程 去执行(同步执行)

        

        

        NSBlockOperation *blockOperation = [NSBlockOperation blockOperationWithBlock:^{

    //        具体执行的方法

            [self act:@"blockOperation"];

        }];

        

    //    添加操作

    //    NSBlockOperation 的操作数大于1的时候  会开辟线程执行

        [blockOperation addExecutionBlock:^{

            [self act:@"blockOperation2"];

        }];

        

        

    //    [blockOperation start];

    //    Operation 默认在当前线程 去执行(同步执行)

        

        

    // NSOperationQueue(线程队列) 管理线程 (默认会开辟线程去执行)

    //    *****NSOperationQueue不用手动去启动线程

    //    异步执行

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

    //    设置 线程队列的 最大并发数 (最多可以允许几个操作 同时执行)

        queue.maxConcurrentOperationCount = 1;

        [queue addOperation:invocation];

        [queue addOperation:invocation1];

        [queue addOperation:invocation2];

        [queue addOperation:invocation3];

        [queue addOperation:invocation4];

        [queue addOperation:blockOperation];

        

    }

    - (void)act:(id)sender

    {

        NSLog(@"%@ %@",[NSThread currentThread],sender);

    }

    - (void)didReceiveMemoryWarning {

        [super didReceiveMemoryWarning];

        // Dispose of any resources that can be recreated.

    }

    @end

  • 相关阅读:
    动态规划(下):如何求得状态转移方程并进行编程实现?
    SQL注入
    动态规划(上):如何实现基于编辑距离的查询推荐?
    XSS
    组合
    访问控制
    排列
    基于离散对数的签名方案
    基于RSA的签名方案
    centos7基于Hadoop的集群安装配置Hive
  • 原文地址:https://www.cnblogs.com/wukun16/p/4884140.html
Copyright © 2011-2022 走看看