OC线程

AppDelegate.h


#import <Cocoa/Cocoa.h>


@interface AppDelegate : NSObject <NSApplicationDelegate>

{

    NSOperationQueue *processingQueue;

}


@property (weak) IBOutlet NSTextField *titleLabel;


- (IBAction)start:(id)sender;


@end


AppDelegate.m


#import "AppDelegate.h"


NSString * num = @"0";

@interface AppDelegate ()


@property (weak) IBOutlet NSWindow *window;

@end


@implementation AppDelegate

@synthesize titleLabel;


- (instancetype)init

{

    self = [super init];

    if (self) {

        processingQueue = [[NSOperationQueue alloc]init];

        [processingQueue setMaxConcurrentOperationCount:4];

    }

    return self;

}

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {

    // Insert code here to initialize your application

}



- (void)applicationWillTerminate:(NSNotification *)aNotification {

    // Insert code here to tear down your application

}



- (IBAction)start:(id)sender {

    //线程1

    [processingQueue addOperationWithBlock:^{

        

        NSLog(@"线程1%@",[NSThread currentThread]);

        @synchronized(num){

        num =@"1";

        }

         NSLog(@"===============%@",num);

        //线程2

        [processingQueue addOperationWithBlock:^{

            NSLog(@"线程2%@",[NSThread currentThread]);

            

            @synchronized(num){

            num =@"2";

            }

            NSLog(@"===============%@",num);

        }];

       

    }];

    //线程3

    [processingQueue addOperationWithBlock:^{

        NSLog(@"线程3%@",[NSThread currentThread]);

        @synchronized(num){

        num =@"3";

        }

        NSLog(@"===============%@",num);

    }];

    

    //线程4

    [processingQueue addOperationWithBlock:^{

        NSLog(@"线程4%@",[NSThread currentThread]);

        @synchronized(num){

        num =@"4";

        }

        NSLog(@"===============%@",num);

    }];

    //线程5

    [processingQueue addOperationWithBlock:^{

        NSLog(@"线程5%@",[NSThread currentThread]);

        @synchronized(num){

        num =@"5";

        }

        NSLog(@"===============%@",num);

    }];

    //主线程

    [[NSOperationQueue mainQueue]addOperationWithBlock:^{

        NSLog(@"主线程%@",[NSThread currentThread]);

        @synchronized(num){

        num =@"10000";

        }

        NSLog(@"===============%@",num);

    }];

    

    

//    NSLog(@"前台处理%@",[NSThread currentThread]);

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

}

-(void)backgroundOperation{

//    @autoreleasepool{

//    NSLog(@"后台处理%@",[NSThread currentThread]);

//    [self performSelectorOnMainThread:@selector(updateUI) withObject:nil waitUntilDone:NO];

//    }

}

-(void)updateUI{

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

    [titleLabel setStringValue:@"后台处理"];

}

@end


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值