当前位置: 首页 > news >正文

北京公司网站怎么制作中国进入全国紧急状态

北京公司网站怎么制作,中国进入全国紧急状态,收费报名网站怎么做,公众号平台建设网站1、 前言 当我们在应用程序中启动一个线程的时候,也是有可能发生OOM错误的。当我们看到以下log的时候,就说明系统分配线程栈失败了。 java.lang.OutOfMemoryError: pthread_create (1040KB stack) failed: Out of memory这种情况可能是两种原因导致的。…

1、 前言

当我们在应用程序中启动一个线程的时候,也是有可能发生OOM错误的。当我们看到以下log的时候,就说明系统分配线程栈失败了。

java.lang.OutOfMemoryError: pthread_create (1040KB stack) failed: Out of memory

这种情况可能是两种原因导致的。

  • 第一个就是系统的内存不足的时候,我们去启动一个线程。
  • 第二种就是进程内运行的线程总数超过了系统的限制。

如果是内存不足的情况,需按照堆内存治理的方式来进行解决,检查应用内存泄漏问题并优化,此情况不作为本次讨论的重点。

本次主要讨论进程内运行的线程总数超过了系统的限制所导致的情况。出现此情况时,我们就需要通过控制并发的线程总数来解决这个问题。

想要控制并发的线程数。最直接的一种方式就是利用回收的思路,也就是让我们的线程通过串行的方式来执行;一个线程执行完毕之后,再启动下一个线程。这样就能够让并发的线程总数达到一个可控的状态。

另外一种方式就是通过复用来解决,让同一个线程的实例可以被反复的利用,只创建较少的线程实例,就能完成大量的异步操作。

2、异步任务的方式对比

对比一下,在安卓平台我们比较常用的开启异步任务的方式中,有哪些是更加有利于我们进行线程总数的控制的。

2.1 Thread

从最简单的直接创建Thread的实例的方式来说起。在Java中这种方式虽然是最简单的去开启一个线程的方式,但是在实际开发中,一旦我们通过这种方式去自己创建 Thread 类的实例,并且调用 start 来开启一个线程的话,所开启的线程会非常的难以调度和管理。这种线程也就是我们平时所说的野线程。所以我们最好不要直接的创建thread类的实例。

2.2 HandlerThread

public class HandlerThread extends Thread { }

HandlerThread是Thread类的子类,对Thread做了很多便利的封装。它有自己的Loop,它能够进行消息循环,所以就能够做到通过Handler执行异步任务,也能够做到在不同的线程之间,通过Handler进行现成的通讯。我们可以利用Handler的post操作,让我们在一个线程内部串行的执行多个异步任务。从内存的角度来说,也就相当于对线程进行了复用。

2.3 AsyncTask

AsyncTask是一个相对更加轻量级,专门为了完成执行异步任务,然后返回UI线程更新UI的操作而设计的。对于我们来说,AsyncTask更像是一个任务的概念,而不是一个线程的概念。我们不需要把它当做一个线程去理解。 AsyncTask的本质,其实也是对线程和Handler的封装。

  • Android 1.6前,串行执行,原理:一个子线程进行任务的串行执行;
  • Android 1.6到2.3,并行执行,原理:一个线程数为5的线程池并行执行,但如果前五个任务执行时间过长,会堵塞后续任务执行,故不适合大量任务并发执行;
  • Android 3.0后,串行执行,原理:全局线程池进行串行处理任务;

到了Android 3.0以上版本,默认是串行执行的,但是可以结合线程值来实现有限制的并行。也可以达到一个限制线程总数的目的。

2.4 线程池

Java语言本身也为我们提供了线程池。线程池的作用就是可以管理并发数,并且能够持续的去复用线程。如果在一个应用内部的全部异步操作,全部都采用线程池的方式来开启的话,那么我们就能够管理我们所有的异步任务了。这样一来,能够大大的降低线程治理的成本。

2.5 Kotlin协程

在Kotlin中还引入了协程的概念。协程给传统的Java的异步编程带来最大的改变,就是能够让我们更加优雅的去实现异步任务。我们前面所说的这几种异步任务的执行方式,都需要我们额外的去写大量的样本代码。而Kotlin协程就能够做到让我们用写同步代码的方式去写异步代码。

在语法的层面上,协程的另一个优势就是性能方面。协程能够帮助我们用更少的线程去执行更多的并发任务。同样也降低了我们治理内存的成本。从治理内存的角度来说,用线程池接管线程或者采用协程都是很好的方式。

Android 学习笔录

Android 性能优化篇:https://qr18.cn/FVlo89
Android Framework底层原理篇:https://qr18.cn/AQpN4J
Android 车载篇:https://qr18.cn/F05ZCM
Android 逆向安全学习笔记:https://qr18.cn/CQ5TcL
Android 音视频篇:https://qr18.cn/Ei3VPD
Jetpack全家桶篇(内含Compose):https://qr18.cn/A0gajp
OkHttp 源码解析笔记:https://qr18.cn/Cw0pBD
Kotlin 篇:https://qr18.cn/CdjtAF
Gradle 篇:https://qr18.cn/DzrmMB
Flutter 篇:https://qr18.cn/DIvKma
Android 八大知识体:https://qr18.cn/CyxarU
Android 核心笔记:https://qr21.cn/CaZQLo
Android 往年面试题锦:https://qr18.cn/CKV8OZ
2023年最新Android 面试题集:https://qr18.cn/CgxrRy
Android 车载开发岗位面试习题:https://qr18.cn/FTlyCJ
音视频面试题锦:https://qr18.cn/AcV6Ap

http://www.dt0577.cn/news/55814.html

相关文章:

  • 东莞专业做外贸网站的公司如何发布自己的html网站
  • 建设局特种作业网站seo研究协会
  • linux上上线wordpress广东的seo产品推广服务公司
  • 怎么做淘客手机网站高端网站建设案例
  • wex5做视频网站如何优化关键词搜索排名
  • 玉溪网络推广 网站建设世界网站排名查询
  • 短租网网站开发 项目背景小程序推广50个方法
  • 常州专业网站建设公司咨询b2b有哪些电商平台
  • 拖拽式wordpress建站南京seo代理
  • 哪些网站做彩票预测途径网店推广平台有哪些
  • B2C营销型网站策划产品推广文章
  • 高校档案室网站建设注册域名在哪里注册
  • 企业网站建设的软件外包公司好不好
  • 网站开发技术培训最佳磁力吧ciliba搜索引擎
  • 做网站经常用的术语完整的社群营销方案
  • 开发商是不是建设单位seo外链论坛
  • 公司网站怎么设计制作seovip培训
  • 网络营销平台都有哪些企业seo网站推广
  • 网页传奇发布网关键词优化公司费用多少
  • 厦门网站设计制作湖南专业seo优化
  • 企业做定制网站的好处网站如何才能被百度收录
  • 东莞网络seo教育
  • 网站的上一页怎么做的泰州seo推广公司
  • 做色情诱导网站下载百度安装到桌面
  • wordpress固定链接显示404成都百度推广优化创意
  • 阆中做网站最近的新闻事件
  • 如何自制一个网站抖音优化公司
  • 做网站 php python网络营销介绍
  • 网络举报网站软文写手兼职
  • 在淘宝做印刷网站怎么办理上海网络营销seo