一.什么是线程?什么是多线程?              线程是用来执行任务的,线程彻底执行完任务A才能去执行任务B.为了同时执行两个任务,产生了多线程. 例子: 打开一个音乐软件,用户开辟一个线程A让它去执行下载任务,在开辟一个线程B去执行播放音乐任务.用户开辟了这两个线程(任务)后,相当于这两个任务(线程)能同时执行.如果用户只开辟一个线程去工作,那么只有等到前一个下载任务完成之后,才能去执行播放任务. 总结: 线程相当于店里的服务员,一个服务员同时只能做一件事情,多顾几个服务员,就能同时做…
iOS 支持多个层次的多线程编程,层次越高的抽象程度越高,使用起来也越方便,也是苹果最推荐使用的方法.下面根据抽象层次从低到高依次列出iOS所支持的多线程编程范式:1, Thread;2, Cocoa operations;3, Grand Central Dispatch (GCD) (iOS4 才开始支持) 下面简要说明这三种不同范式:Thread 是这三种范式里面相对轻量级的,但也是使用起来最负责的,你需要自己管理thread的生命周期,线程之间的同步.线程共享同一应用程序的部分内存空间,…
GCD:Grand Central Dispath "牛逼的中枢调度器";是纯C语言编写的,提供了很多比较强大的函数 GCD:优势 1.目前是苹果主推的线程管理方式 2.它会自动的利用更多的CPU资源(双核,四核) 3.它会自动的管理线程的生命周期(线程的创建/调度/销毁); 4.程序员只需要告诉GCD自己想要执行的哪些任务,不需要写一行线程管理的代码 #import "ViewController.h" #define kURLString1 @"htt…
协程 我们要下载一张图片,加载一个资源,这个时候一定不是一下子就加载好的,或者说我们不一定要等它下载好了才进行其他操作,如果那样的话我就就卡在了下载图片那个地方,傻住了.我们希望我们只要一启动加载的命令,回来的时候主线程能够继续进行下去. 我们可以启动一个协程去下载,主进程依然在运行.有点类似多线程,不同的是,实际上它还是在一个线程里面,所以我们是在主线程中开启一段逻辑来进行处理,来协同当前程序的执行,还是在主线程里面. 1:在主进程中开启另外一段逻辑处理,来协同当前程序的执行,但与多线程不同都…
在使用VS2005的时候,如果你从非创建这个控件的线程中访问这个控件或者操作这个控件的话就会抛出这个异常.这是微软为了保证线程安全以及提高代码的效率所做的改进,但是也给大家带来很多不便. 其实解决这个问题有两种方法:一,是通过设置System.Windows.Forms.Control.CheckForIllegalCrossThreadCalls = false;在你的程序初始化的时候设置了这个属性,而且在你的控件中使用的都是微软Framework类库中的控件的话,系统就不会再抛出你上面所说的…
1.多线程执行者/处理类 都是Runnable的实现类(如自定义类实现Runnable 或 java原生的Thread.FutureTask),但最后都必须封装成Thread线程类由Thread.start()方法来启动一个线程注:FutureTask 一般是用来封装Callable处理类(FutureTask本身就是Runnable的实现类),主要是用在远程调用不阻塞优化方面,最后通过get获取远程结果(阻塞/设定超时时间)Runnable 和 Callable的区别(1)Callable规定…
 本文关键词: java 多线程 概念 进程 线程区别联系 java创建线程方式 线程组 线程池概念 线程安全 同步 同步代码块 Lock锁  sleep()和wait()方法的区别 为什么wait(),notify(),notifyAll()等方法都定义在Object类中 多线程 •进程: •正在运行的程序,是系统进行资源分配和调用的独立单位. •每一个进程都有它自己的内存空间和系统资源. •线程: •是进程中的单个顺序控制流,是一条执行路径 •一个进程如果只有一条执行路径,则称为单线程程序.…
1.进程?线程?多线程? 进程就是正在运行的程序,他是线程的集合. 线程是正在独立运行的一条执行路径. 多线程是为了提高程序的执行效率.2.同步?异步? 同步: 单线程 异步: 多线程 3.守护线程?非守护线程(用户线程)? 守护线程: 和main相关,和主线程一起销毁.(例如:gc线程,垃圾回收机制,主要回收主线程垃圾,和主线程一起销毁) 非守护线程: 也叫用户线程,也就是用户自己创建的线程,和主线程没有一点联系,互补干扰,也就是说,主线程挂了,用户线程也不会挂 非守护线程转换为守护线程: 线…
iOS开发多线程篇—线程间的通信 一.简单说明 线程间通信:在1个进程中,线程往往不是孤立存在的,多个线程之间需要经常进行通信 线程间通信的体现 1个线程传递数据给另1个线程 在1个线程中执行完特定任务后,转到另1个线程继续执行任务 线程间通信常用方法 - (void)performSelectorOnMainThread:(SEL)aSelector withObject:(id)arg waitUntilDone:(BOOL)wait; - (void)performSelector:(SE…
一.进程和线程 1.什么是进程 进程是指在系统中正在运行的一个应用程序 每个进程之间是独立的,每个进程均运行在其专用且受保护的内存空间内 比如同时打开 Chrome.Xcode,系统就会分别启动2个进程 通过“活动监视器”可以查看Mac系统中所开启的进程 2.什么是线程 1个进程要想执行任务,必须得有线程(每1个进程至少要有1条线程) 线程是进程的基本执行单元,一个进程(程序)的所有任务都在线程中执行 比如使用QQ ,或者Xcode 都需要在线程中执行 3.线程的串行 1个线程中任务的执行是串行…