//
// ViewController.m
// 03-掌握-NSThread基本使用 #import "ViewController.h"
#import "XMGThread.h" @interface ViewController () @end @implementation ViewController -(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
[self createNewThread1];
} //1.alloc init 创建线程,需要手动启动线程,根据线程的number判断是不是同一个线程。
//线程的生命周期:当任务执行完毕之后被释放掉(比较特殊,)
-(void)createNewThread1
{
//1.创建线程
/* 第一个参数:目标对象 self
第二个参数:方法选择器 调用的方法
第三个参数:前面调用方法需要传递的参数 nil */ //XMGThread是继承自NSThread的类,threadA是局部变量,大括号之后就销毁了,
XMGThread *threadA = [[XMGThread alloc]initWithTarget:self selector:@selector(run:) object:@"ABC"];
//设置属性
threadA.name = @"线程A";//属性用点语法和set方法是一样的。
//设置优先级 取值范围 0.0 ~ 1.0 之间 最高是1.0 默认优先级是0.5,获取cpu的几率更大,
threadA.threadPriority = 1.0;
//2.启动线程,// 进入就绪状态 -> 运行状态。当线程任务执行完毕,自动进入死亡状态
[threadA start]; NSThread *threadB = [[NSThread alloc]initWithTarget:self selector:@selector(run:) object:@"ABC"];//object是run方法的参数,处于暂停状态。
threadB.name = @"线程b";
threadB.threadPriority = 0.1;
[threadB start]; NSThread *threadC = [[NSThread alloc]initWithTarget:self selector:@selector(run:) object:@"ABC"];
threadC.name = @"线程C";
[threadC start]; [self createNewThread3]; } //2.分离子线程,自动启动线程,不需要start,拿不到线程对象,无法对线程进行更详细的设置
-(void)createNewThread2
{
[NSThread detachNewThreadSelector:@selector(run:) toTarget:self withObject:@"分离子线程"];
} //3.开启一条后台线程,不需要start,拿不到线程对象,无法对线程进行更详细的设置
-(void)createNewThread3
{
[self performSelectorInBackground:@selector(run:) withObject:@"开启后台线程"];
} -(void)run:(NSString *)param
{
NSLog(@"---run----%@---%@",[NSThread currentThread].name,param);
for (NSInteger i = ; i<; i++) {
NSLog(@"%zd----%@",i,[NSThread currentThread].name);
}
} @end /*
启动线程
- (void)start;
// 进入就绪状态 -> 运行状态。当线程任务执行完毕,自动进入死亡状态 阻塞(暂停)线程
+ (void)sleepUntilDate:(NSDate *)date;
+ (void)sleepForTimeInterval:(NSTimeInterval)ti;
// 进入阻塞状态 强制停止线程
+ (void)exit;
// 进入死亡状态 注意:一旦线程停止(死亡)了,就不能再次开启任务
*/
//
// XMGThread.h
// 03-掌握-NSThread基本使用
//
// Created by xiaomage on 16/2/18.
// Copyright © 2016年 小码哥. All rights reserved.
// #import <Foundation/Foundation.h> @interface XMGThread : NSThread @end
//
// XMGThread.m
// 03-掌握-NSThread基本使用
//
// Created by xiaomage on 16/2/18.
// Copyright © 2016年 小码哥. All rights reserved.
// #import "XMGThread.h" @implementation XMGThread -(void)dealloc
{
NSLog(@"dealloc----%@",[NSThread currentThread]); //线程的run方法执行完之后,才调用。
}
@end

ios31--NSThread的更多相关文章

  1. 4.1/4.2 多线程进阶篇<上>(Pthread & NSThread)

    本文并非最终版本,如有更新或更正会第一时间置顶,联系方式详见文末 如果觉得本文内容过长,请前往本人 “简书” 本文源码 Demo 详见 Githubhttps://github.com/shorfng ...

  2. iOS开发之多线程技术(NSThread、OperationQueue、GCD)

    在前面的博客中如果用到了异步请求的话,也是用到的第三方的东西,没有正儿八经的用过iOS中多线程的东西.其实多线程的东西还是蛮重要的,如果对于之前学过操作系统的小伙伴来说,理解多线程的东西还是比较容易的 ...

  3. iOS多线程之3.NSThread的线程间通信

      我们把一些耗时操作放在子线程,例如下载图片,但是下载完毕我们不能在子线程更新UI,因为只有主线程才可以更新UI和处理用户的触摸事件,否则程序会崩溃.此时,我们就需要把子线程下载完毕的数据传递到主线 ...

  4. iOS多线程之2.NSThread的加锁@synchronized

    我在上一篇文章讲了线程的生命周期,这篇文章来讲讲线程加锁的注意事项与@synchronized关键字.   那什么时候需要加锁呢,就是当多条线程同时操作一个变量时,就需要加锁了.至于为什么要加锁,可以 ...

  5. 1.多线程-NSThread

    1.在主线程执行多次NSLog模拟耗时操作 结果,卡住主线程 解决方案: performSelectorInBackground让程序在后台执行   2.pthread的使用 开辟子线程,执行一个函数 ...

  6. iOS GCD NSOperation NSThread等多线程各种举例详解(拷贝)

    2年多的iOS之路匆匆而过,期间也拜读来不少大神的博客,近来突然为自己一直做伸手党感到羞耻,是时候回馈社会.回想当年自己还是小白的时候,照着一些iOS多线程教程学,也只是照抄,只知其然.不知其所以然. ...

  7. IOS UI多线程 NSThread 下载并显示图片到UIImageView

    效果图 @property (weak,nonatomic)IBOutletUILabel *downLabelInfo; @property (weak,nonatomic)IBOutletUIIm ...

  8. NSThread 子线程 Cocoa NSOperation GCD(Grand Central Dispatch) 多线程

    单词:thread 英 θred:n 线.思路.vt 穿过.vi 穿透过 一.    进程.线程 进程:正在进行中的程序被称为进程,负责程序运行的内存分配,每一个进程都有自己独立的虚拟内存空间 线程: ...

  9. 多线程NSThread基本用法

        #import "ViewController.h" @interface ViewController () @end @implementation ViewContr ...

  10. IOS 多线程02-pthread 、 NSThread 、GCD 、NSOperationQueue、NSRunLoop

    注:本人是翻译过来,并且加上本人的一点见解. 要点: 1.前言 2.pthread 3.NSThread 4.Grand Central Dispatch(GCD) 5.Operation Queue ...

随机推荐

  1. ajax中的json和jsonp详解

    出现的问题: 花了点时间研究ajax中的json和jsonp的原理,这里记录一下.以前一直在使用ajax调用数据,但是从来没有遇到跨域问题,也从来没有注意过json和jsonp的区别,总是一通乱用.但 ...

  2. 常量指针(pointer to constant)和指针常量(constant pointer)

    一个指针可以操作两个实体,一个是指针值(即地址),一个是间访值(即指向的实体).于是指针的常量性也分为两种:常量指针(pointer to constant)和指针常量(constant pointe ...

  3. CSU1022: 菜鸟和大牛

    1022: 菜鸟和大牛 Submit Page   Summary   Time Limit: 1 Sec     Memory Limit: 128 Mb     Submitted: 1390   ...

  4. thinkphp3.2使用PHPQrcode实现二维码

    Thinkphp中没有二维码相关的生成库,百度有不少工具和库 这里就实例一下通过think3.2搭配phpqrcode来完成生成二维码的功能. 至于phpQrcode库文件 百度很容易找到这里也给大家 ...

  5. 洛谷 3871 [TJOI2010]中位数

    [题解] 平衡树模板题,不过因为可以离线,所以有别的做法.把询问倒着做,变成删掉数字.求中位数,于是可以二分+树状数组. #include<cstdio> #include<cstr ...

  6. 慕课笔记利用css进行布局【混合布局】

    <html> <head> <title>混合布局学习</title> <style type="text/css"> ...

  7. eclipse中自动生成注释

    eclipse中自动生成注释 包前缀设置的地方 注释模板设置的地方 Eclipse自动生成方法注释 快捷键 自动生成方法的注释格式,例如 /*** @param str* @return* @thro ...

  8. 编程数学(A-2)-次方

    百度百科:次方. 特别是一个数的负次方需要注意.

  9. POJ 3264 RMQ问题 用dp解决

    #include <cstdio> #include <cstring> #include <iostream> using namespace std; ; #d ...

  10. [NOIP2007] 提高组 洛谷P1099 树网的核

    题目描述 设T=(V, E, W) 是一个无圈且连通的无向图(也称为无根树),每条边到有正整数的权,我们称T为树网(treebetwork),其中V,E分别表示结点与边的集合,W表示各边长度的集合,并 ...