zoukankan      html  css  js  c++  java
  • 线程NSThread的使用

    //
    //  ZYThreadViewController.h
    //  Thread
    //
    //  Created by yejiong on 15/11/4.
    //  Copyright © 2015年 zzz. All rights reserved.
    //
    
    #import <UIKit/UIKit.h>
    
    @interface ZYThreadViewController : UIViewController
    
    @end
    //
    //  ZYThreadViewController.m
    //  Thread
    //
    //  Created by yejiong on 15/11/4.
    //  Copyright © 2015年 zzz. All rights reserved.
    //
    
    #import "ZYThreadViewController.h"
    
    @interface ZYThreadViewController ()
    
    @end
    
    @implementation ZYThreadViewController
    
    - (void)viewDidLoad {
        self.view.backgroundColor = [UIColor whiteColor];
        
        if ([NSThread isMainThread]) {
            NSLog(@"主线程");
        }else {
            NSLog(@"分线程");
        }
    }
    
    - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
        //1.在分线程中执行 target 的 selector 方法,传入一个参数 argument。
    //    NSThread* thread = [[NSThread alloc] initWithTarget:self selector:@selector(run:) object:@"123"];
    //
    //    [thread start];
    //    
    //    [thread release];
        
        //2.创建并开启一个分线程。
    //    [NSThread detachNewThreadSelector:@selector(run:) toTarget:self withObject:@"789"];
        
        //3.隐式的创建一个分线程执行 selector 方法。
        [self performSelectorInBackground:@selector(run:) withObject:@"000"];
    }
    
    //以前在分线程中需要我们自己去创建 NSAutoreleasePool 释放在分线程中使用的 autorelease 变量,现在没有这个限制了。
    - (void)run:(id)object {
        NSLog(@"%@", object);
    
        //设置线程休眠多少秒。
    //    [NSThread sleepForTimeInterval:1.0];
        
        //使线程休眠到某个时间。
    //    [NSThread sleepUntilDate:[NSDate dateWithTimeIntervalSinceNow:1.0]];
    
        if ([NSThread isMainThread]) {
            NSLog(@"主线程");
        }else {
            NSLog(@"分线程");
        }
        
        //回到主线程执行 方法调用者 的 selector 方法。
        [self performSelectorOnMainThread:@selector(mainThreadLog:) withObject:@"456" waitUntilDone:NO];
        //wait
        //YES,等待 selector 方法中的内容执行完毕在继续执行分线程中的内容,阻塞当前线程。
        //NO,不等待,两者同时执行,并发执行。
        
        NSLog(@"----------");
        NSLog(@"----------");
        NSLog(@"----------");
        NSLog(@"----------");
        NSLog(@"----------");
        NSLog(@"----------");
        NSLog(@"----------");
        NSLog(@"----------");
    }
    
    - (void)mainThreadLog:(id)objcet {
        NSLog(@"%@", objcet);
        
        if ([NSThread isMainThread]) {
            NSLog(@"主线程");
        }else {
            NSLog(@"分线程");
        }
    }
    
    
    
    @end
  • 相关阅读:
    UVA12125 March of the Penguins (最大流+拆点)
    UVA 1317 Concert Hall Scheduling(最小费用最大流)
    UVA10249 The Grand Dinner(最大流)
    UVA1349 Optimal Bus Route Design(KM最佳完美匹配)
    UVA1212 Duopoly(最大流最小割)
    UVA1395 Slim Span(kruskal)
    UVA1045 The Great Wall Game(二分图最佳匹配)
    UVA12168 Cat vs. Dog( 二分图最大独立集)
    hdu3488Tour(KM最佳完美匹配)
    UVA1345 Jamie's Contact Groups(最大流+二分)
  • 原文地址:https://www.cnblogs.com/ningmengcao-ios/p/5771204.html
Copyright © 2011-2022 走看看