![](https://img-blog.csdnimg.cn/20190927151053287.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
高并发
文章平均质量分 95
高并发相关
narkang
一切的成功都是背后的努力和汗水
展开
-
AsyncTask介绍及源码执行过程分析
1.概述在Android中线程是一个很重要的概念,从用途来说,线程分为主线程和子线程,主线程主要去做界面的更新操作,而子线程去做耗时操作,从网络去拉取数据。在Android3.0以后开始,系统要求网络访问必须在子线程中执行,否则会报NetworkOnMainThreadException这个异常,这样做是为了避免在主线程中执行耗时操作而出现ANR异常。对于一般线程操作,可以使用Thread+Hand原创 2016-11-27 10:26:09 · 417 阅读 · 0 评论 -
并发系列--Future和Callable
一、Runnable的缺陷在多线程开发中,一般都会使用Runnable来处理异步任务,但是它有一定的缺陷1、不能返回一个返回值2、也不能抛出checked Exception接着就可以引入下面主题,Callable和Future,它在Android源码中很多地方使用到了,比如AsyncTask中,学会了Callable和Future,就可以更方便看源码。二、有返回值Callable接口它是一个接口,约定了线程要做的事情,作用:1、类似于Runnable,被其它线程执行的任务2、实现cal原创 2020-08-21 23:34:06 · 865 阅读 · 0 评论 -
java线程池复习
在操作系统中,线程是操作系统调度的最小单位,同时线程又是一种受限的系统资源,即线程不可能无限地产生,并且线程的创建和销毁都会有相应的开销。所以就有了线程池的引入,它可以避免因为频繁创建和销毁线程所带来的系统开销。Android中的线程来源于java,主要是通过Executor来派生特定的线程池。优点: (1).重用线程池中的线程,避免因为线程的创建和销毁所带来的性能开销。 (2).能有效地...原创 2018-08-01 10:47:08 · 450 阅读 · 0 评论 -
深入学习java各种容器--面试使用
转载地址对着原文走了一遍流程,分析地址是androd sdk中的29中的源代码分析,和原文地址jdk源码分析有点区别,大体一致前言相信大家在工作中使用容器的场景是具有多变性的,那么在性能方面你知道怎么去选择一种当前最优的数据结构吗? 或许对于工作多年有经验的开发者来说,是没有问题的。但是对于刚入门 1 ~ 2 年或者只知道怎么使用而不知道对当前最适用的,那么这一篇文章将全面为你解惑。该篇还是延续上一篇 面试官: 说一下你做过哪些性能优化? 的风格,以问答的模式来进行解答,相信对你是有帮助的。如转载 2020-08-15 19:41:55 · 284 阅读 · 0 评论 -
并发系列--CAS原理
概述在平时多线程开发中,一般为了保持代码的同步性,不使代码在多线程环境下出错,都会给代码加synchronized锁,这样固然会使问题得到解决。但是每次在调用对应方法时候,都会获取或者等待锁释放,会有一定的性能问题,因为线程从阻塞到运行,都会有对应的状态切换,可能线程状态切换的时间比同步代码块的执行时间还长,这样性能会受到一定程度的影响。这时候就可以引入本章要介绍的话题,CASCAS是什么CAS是英文单词CompareAndSwap的缩写,中文的意思是:比较并替换。底层通过利用 CPU 的 CAS 指原创 2020-08-15 10:05:20 · 368 阅读 · 0 评论 -
并发系列--Java中的各种锁
Java中的各种锁Lock接口Lock简介,地位,作用锁是一种工具,用于控制对共享资源的访问Lock和Synchronized,这两个是最常见的锁,它们都可以达到线程安全的目的,但是在使用上和功能上又有较大的不同Lock并不是用来代替synchronized的,而是当使用synchronized不合适或不满足要求的时候,来提供高级功能的。Lock接口最常见的实现类是ReentraintLock通常情况下,Lock只允许一个线程来访问这个共享资源。不过有的时候,一些特殊的实现也可允许并发访问,比原创 2020-08-14 22:37:50 · 294 阅读 · 0 评论 -
并发系列--ThreadLocal
前言阅读ThreadLocal以前在看源码的时候会使用到,并且面试时候也会问到,最近趁空余时间看了下源码,来此总结下。ThreadLocal是线程内部的数据类,通过它可以在指定的线程中存储数据,对于其它线程是无法获取到数据。借此可以实现一些特殊功能。使用场景一、场景一 每个线程需要一个独享的对象当某些数据是以线程为作用域并且不同线程具有不同的数据副本的时候,就可以考虑采用ThreadLocal。最常见的使用场景就是Handler的Looper,它的作用域就是线程并且不同线程具有不同的Looper,原创 2020-08-08 14:36:16 · 317 阅读 · 0 评论 -
并发系列--Synchronized使用与原理
前言Synchronized在多线程中使用得比较多的,这两天看了下慕课网相关课程,在此总结下其使用和原理作用:Synchronized据有可重入,不可中断性,能够保证在同一时刻最多只有一个线程执行该段代码,以达到保证并发安全的效果,内部是通过monitor来加锁和解锁的。地位:1.Synchronized是java的关键字,被java语言原生支持。2.是最基本的互斥同步手段。3.是并发编程中的元老级角色,是并发编程的必学内容。不使用并发的后果两个线程同时a++,如果不加锁,最后结果原创 2020-08-09 12:16:15 · 213 阅读 · 0 评论