如何理解线程

       线程:用来执行进程中的任务的,每次只能执行一个任务,线程彻底执行完任务A才能去执行任务B。为了同时执行两个任务,产生了多线程。举一个例子:在你打开一个音乐播放器时,你听歌是一个线程,如果同时下载歌曲,就是另一个线程,听歌的同时下载歌曲就是两个进程,即多进程。

         主线程:当应用程序启动时自动创建和启动,通常用来处理用户的输入并响应各种事件和消息,主线程的终止也意味着该程序的结束。

         子线程:由主线程来创建,用来帮助主线程执行程序的后台处理任务。如果子线程A中有创建了一个子线程B,在创建之后,这两者就会是相互独立的,多个子线程之间效果上可以同时执行。


                值得注意的是: 同一时间内, CPU 只能处理一条线程,只有一条线程在工作。多线程并行执行,其实就是各个线程不断切换,因为执行切换的时间很快很快,就造成了同时执行的假象,原理如下,比如 A B 两个线程, A 执行到某一时间段要切换了,可 A 任务没完成,系统就会把 A 当前执行的位置和数据以入栈的方式保存起来, 然后 B 线程执行, B 执行时间到了,它的位置状态等也会被系统保存到 B 的栈中。 系统自动找到 A 的栈,将 A 之前保存的数据恢复,又可以从 A 之前断开的状态继续执行下去,如此循环。 系统每开一个线程都有比较大的开销,若线程开的过多,不仅会占用大量内存和让程序变得更加复杂,而且会加重 CPU 的负担,这样的软件,会让你省掉冬天买暖手宝的钱。


         多线程的优势:提高程序执行效率,避免线程阻塞造成的卡顿现象,能适当提高资源利用率(CPU,内存)。

         多线程的不足:开启线程需要占用一定的内存空间,线程越多,CPU在线程调度上的开销就越大,程序设计更加复杂:比如线程之间的通信、多线程的数据共享。


       主线程和子线程的区别:主线程一启动就自动创建,用来显示和刷新UI界面,处理UI事件;子线程处理耗时的操作,且不能用来刷新UI。



  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值