多线程知识点(一)

1. for循环是不耗时的,i/o操作耗时

2. [NSThread currentThread]获取当前线程number代表线程的编号,name线程的名称,如果number为1则代表为主线程

3.使用pthread开启新的线程

/*

参数1:线程的编号地址

参数2:线程的属性

参数3:开启的线程要执行的函数 void*  (*)  (void *)

参数4:给要执行的函数传递的参数

*/

pthread_t ID;

//开启子线程,自动销毁

int result = pthread_create(&ID, NULL, demo, NULL);

//如果返回值为0,则代表成功,其他的代表的失败

if (result == 0) {

NSLog(@"开启线程成功");

}else

{

NSLog(@"开启线程失败");

}

}

void* (demo)(void *param)

{

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

return NULL;

}

4. __bridge桥接 可以把c->oc语言的字符串

NSString *str = (__bridge NSString *)(param);

5.开启子线程的三种方式:

//方式1

//    NSThread *thread = [[NSThread alloc]initWithTarget:self selector:@selector(demo) object:nil];

//    [thread start];

//方式2

//    [NSThread detachNewThreadSelector:@selector(demo) toTarget:self withObject:nil];

//方式3

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

6.线程的状态:新建,就绪,运行,阻塞,死亡

7.线程的属性:

thread.name = @"t1";名称

[thread setThreadPriority:0];优先级

[NSThread currentThread].stackSize/1024占用内存

8. //互斥锁 (单个的进行读写操作)

锁对象: 1 必须继承与NSObject

2:必须是全局的

@synchronized(self.obj) {加锁的内容}

9.使用UIScrollView的时候记得添加contentsize

self.sv.contentSize = img.size;

10.直接使用nsurl下载图片

NSURL *url = [NSURL URLWithString:@"http://b.hiphotos.baidu.com/image/pic/item/08f790529822720ea5d058ba7ccb0a46f21fab50.jpg"];

//下载图片

NSData *data = [NSData dataWithContentsOfURL:url];

//NSData - >UIImage

UIImage *img = [UIImage imageWithData:data];

11

1:字符串用copy

2:代理要用weak(防止循环引用self - >p(具有代理属性) - >delegate - > self 循环引用)

3:block用copy

时间: 2024-10-11 23:13:58

多线程知识点(一)的相关文章

Java 多线程知识点整理

1.如何停止一个正在运行的线程? 使用共享变量,用volatile变量修饰,线程循环去访问该变量.如果线程因为发生某些事件进行阻塞,可以使用Thread的interrupt方法.可以使一个被阻塞的线程抛出一个中断异常,从而使线程提前结束阻塞状态,退出堵塞代码. class MyThread extends Thread { volatile boolean stop = false; public void run() { while (!stop) { System.out.println(g

java多线程知识点

下面是我学习多线程记录的知识点,并没详细讲解每个知识点,只是将重要的知识点记录下来,有时间可以看看,如果有不对的地方,欢迎大家支出,谢谢! 1.多线程的状态和创建方式:     线程的状态:          1.新状态:线程对象已经创建,还没有在其上调用start()方法.          2.可运行状态:当线程有资格运行,但调度程序还没有把它选定为运行线程时线程所处的状态.当start()方法调用时,线程首先进入可运行状态.在线程运行之后或者从        阻塞.等待或睡眠状态回来后,也

Java中多线程知识点总结

Java中有一个比较重要的知识点是多线程,废话就不说了,直接进入多线程的知识点.对多线程我们需要了解和知道一下的知识点:多线程的实现,多线程的安全性,多线程的线程通信,守护线程和线程的优先级等知识点. 首先,我想写点我对多线程的一点认识,其中说的语言不会很官方,但是我相信里面绝对没有坑,不会把大家带到歧途上去的.首先多线程的出现是为了更好的利用计算机的资源,提高程序的响应速度.多线程的运行由操作系统来控制,多核和单核的cpu执行同一个多线程程序的过程可能会不同,在单核中多线程程序只能在单核之间切

多线程知识点总结

1.创建线程的2种方法 方式1:继承java.lang.Thread类,并覆盖run()方法.优势:编写简单:劣势:无法继承其他父类 方式2:实现java.lang.Runnable接口,并实现run()方法.优势:可以继承其他类,多线程可以共享同一个Thread对象:劣势:编程方式稍微复杂,如需访问当前线程,需调用Thread.currentThread()方法 2. Java创建线程后,调用start()方法和run()的区别 两种方法的区别 1) start: 用start方法来启动线程,

java多线程知识点总结

1.线程调度知识:线程类Thread的了解,几个thread的方法.thread.sleep(),thread.join().(调用join方法的那个线程会立刻执行). object.wait()方法,notifyAll()方法. 2.线程间通信知识(共享资源):synchronized,volatile,readWriteLock,生产者消费者存储模型.队列.消息队列. 队列也算共享资源的访问啊.加锁在哪里加?(在共享对象里加锁) 3.实际中用到的地方:1.多线程访问缓存(数据队列,有生产者消

java多线程知识点汇总(四)多线程知识点脉络图

1.多线程安全问题 1)synchronized关键字:如何加锁的问题,选择synchronized方法还是synchnized代码块. 选择哪个锁问题,this对象,还是class对象(针对static方法或者变量),或者object对象 推荐使用同步代码块,因为加锁灵活,可以自己选择使用哪个锁,尤其一个类里面有多个同步方法时. 读写问题,保证多线程对同一对象的读写正常,不至于读到脏数据.读写方法共用同一个锁. 共享资源,这又涉及到单例模式的线程安全问题,线程池等. 2)线程安全类,比如str

多线程知识点(二)

1:互斥锁,只有一个线程进行(例如:读写)操作 2.栈区上面的对象随时可能销毁,ARC下block会自动保存到堆区 //NSGlobalBlock全局区(未使用局部变量) //    void (^task)() = ^{ //        NSLog(@"task"); //    }; //    NSLog(@"%@",task); // //    int a = 6; //    //NSStackBlock  栈区上面的对象随时可能会被销毁 //   

java多线程知识点概述

这里只起一个概述的作用,极其简单的列一下知识点,需要在脑海中过一下,如果哪些方面不熟悉的话,建议利用网络资源去学习. 1.线程.进程概念 概念 线程状态及其转换 2.死锁.预防.解决 3.jdk线程实现方式 继承Thread重写run方法.实现Runnable实现run方法.实现Callable重写call方法 call方法能抛出异常允许有返回值 join/jield/interrupt/stop/wait/sleep/setDaemon/suspend 4.线程同步.线程异步 同步使用场景:共

java多线程知识点汇总(二)---多线程实例解析

本实验主要考察多线程对单例模式的操作,和多线程对同一资源的读取,两个知识.实验涉及到三个类: 1)一个pojo类Student,包括set/get方法. 2)一个线程类,设置student的成员变量age和name的值为111和111 3)另一个线程类,设置student的成员变量age和name的值为222和2222 4)main类,for循环200次,分别创建200个线程1和线程2对同一资源访问.(共400个线程) 1.第一种情况:饿汉式单例模式保证多线程操控的是同一对象 //饿汉式单例模式

多线程知识点之NSThread的使用

/********线程的状态**************************************/ 线程的状态:新建状态(New)--->就绪状态(Runnable)----->运行状态(Running)---->阻塞状态(Blocked)---->死亡状态(Dead) 启动线程 - (void)start; // 进入就绪状态 -> 运行状态.当线程任务执行完毕,自动进入死亡状态 阻塞(暂停)线程 + (void)sleepUntilDate:(NSDate *)d