什么是线程

1、什么是线程?

线程是程序执行的最小单位,CPU把所有的时间分成若干个小片,把每一个小片不断的分给不同的线程来执行,保证每个程序都有机会执行,不会有程序一直霸占CPU。

2、什么是多线程?

多线程是一种并发执行的技术,主要目的是最大化的利用各种资源,提高程序整体性能。另外,在线程之间设计缓冲区,可以很好地对线程进行解耦。

多线程有两层含义,第一层是开启多个线程做不同的事情,这种主要是为了并发同时做很多事情。第二层是开启多个线程做同一个事情,这种是为了效率更高。

在我们计算机中,CPU、磁盘、显卡、网络带宽这些都是资源。比如拷贝文件的时候,主要在使用磁盘资源,这时候其他资源是闲置的,如果使用多线程,就可以把CPU、网络带宽资源利用起来,做到一边拷贝文件,一边打LOL。不过在有些场景里,资源是单一的(比如单核CPU计算圆周率),这时候使用多线程是没有意义的,反而会因为线程之间的切换造成额外的开销。

如果程序有响应迟钝、效率低、吞吐不高的情况,可以考虑使用多线程。

3、操作系统的多线程

在一个GUI的系统中,比如Android、iOS、Windows等等,操作系统本身的设计就是多线程的。其中至少有两个线程,一个叫主线程,另一个叫工作者线程。

主线程一般是用来绘制界面,响应用户操作的(比如触摸、滑动、点击),这个线程最好不被应用程序所打扰,因为它最好保持很高的实时性。

工作者线程,是用来运算或者完成逻辑的,它对用户界面和操作不负责响应,默默的做计算,做逻辑,并将一些结果反馈给主线程,从而展示不同的用户界面和逻辑。

4、APP的多线程

任何一个app,在启动的时候都做了大量的事情,都是多线程的,有的线程可能在加载新模块,有的线程在做上报,有的线程在收集lbs信息等。

多线程也有弊端,就是多个线程的时序不好控制,多个线程之间的共享变量控制难度比较大,多线程通知机制复杂,且调试困难。

5、什么是线程池?

把一个东西「池化」是一种很典型的复用思想,它的核心就是,这些东西如果可以重复使用的话,就尽量不要销毁它。线程池就是线程的集合,为某些任务分类一定的线程数量,大量请求的时候排队等候,避免操作系统占用太多资源。

类似的,还有对象池、连接池等等。


——部分内容整理自网络——

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 174,941评论 25 709
  • 从三月份找实习到现在,面了一些公司,挂了不少,但最终还是拿到小米、百度、阿里、京东、新浪、CVTE、乐视家的研发岗...
    时芥蓝阅读 42,425评论 11 349
  • 文/明月沧海 讲述一个真实却又不真实的悲情故事,叙述一段锥心刺骨的幽冥传奇 莲儿和她的母亲是鬼族,住在半山腰上的公...
    作家明月沧海阅读 4,243评论 0 4
  • 1:30 -- 5: 30
    达魔学院阅读 1,449评论 0 1
  • 常常听人说:“没文化,真可怕!”。可“文化”到底是什么呢?——是学历?是经历?是阅历?都不是。它是植根于内心的修养...
    冷读阅读 6,593评论 0 0