本帖最后由 小刀葛小伦 于 2018-3-21 15:42 编辑
什么是多线程
一、多线程的基本概念
1个进程要想执行任务,必须得有线程(每1个进程至少要有1条线程) 一个进程(程序)的所有任务都在线程中执行。
二、什么是进程
进程是一个具体的应用程序,线程是进程中的一个分支,为单独完成程序中的某一项或一组功能而存在。
应用程序可以有一个或多个进程,一个进程可以有一个或多个线程,其中一个是主线程(线程是进程中的实体,一个线程必须有一个父进程)
三、多线程的作用
多线程不是为了提高执行速度,而是提高了应用程序的使用率。
线程和线程共享“推内存和方法区内存”栈内存是独立的,一个线程一个栈。
可以给现实世界的人类一种错觉:感觉多个线程在同时并发进行。
四、多线程并行和并发:
A:并行是逻辑上同时发生,指在某一个时间内同时运行多个程序
B:并发是物理上同时发生,指在某一个时间点同时运行多个程序
五、Java运行原理
java命令会启动java虚拟机,启动JVM,等于启动了一个应用程序,也就是启动了一个进程。该进程会自动启动一个“主线程”,然后主线程去调用某个类的main方法。所以main方法运行在主线程中。在此之前的所有程序都是单线程。
六、多进程的意义:
单进程的计算机只能做一件事,而现在都可以做多件事情,支持多进程,可以在一个时间段内执行多个任务。 提高CPU的使用率~
问题:
[size=15.4545px] 一边玩游戏,一边听音乐是同时进行吗?
不是。因为单COU在某一个时间点上只能做一件事情。(多核可以实现,但是会有很多进程,就不行了)
而我们在玩游戏,或者听音乐的时候,是CPU在做着程序间的高效切换让我们觉得是同时进行的。 切换时间超短
七、多线程的优点
能适当提高程序的执行效率
能适当提高资源利用率(CPU、内存利用率)
八、多线程的缺点
创建线程是有开销的,iOS下主要成本包括:内核数据结构(大约1KB)、栈空间(子线程512KB、主线程1MB,也可以使用-setStackSize:设置,但必须是4K的倍 数,而且最小是16K),创建线程大约需要90毫秒的创建时间如果开启大量的线程,会降低程序的性能线程越多,CPU在调度线程上的开销就越大程序设计更加复杂:比如线程之间的通信、多线程的数据共享
|
|