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
  • 相关阅读:
    nginx反向代理前后端分离项目(后端多台)
    部署http访问SVN模式出现403问题
    The server quit without updating PID file
    guns开源项目数据库切换为oracle
    window环境下修改postgrep密码
    mybatis中怎样使用having?
    PostgreSQL时间段查询
    Java实现产生一个int数组,长度为100,并向其中随机插入1-100,并且不能重复。
    Jenkins构建maven项目跳过测试用例的命令
    supervisord
  • 原文地址:https://www.cnblogs.com/ningmengcao-ios/p/5771204.html
Copyright © 2011-2022 走看看