java
文章平均质量分 79
高飞小童鞋
喜欢我就关注我呗!
展开
-
java之线程池知识整理
开发过程中进程要用线程池,今天就好好整理一下java中线程池的知识。定义线程池是一种多线程处理形式,处理过程中将任务添加到队列,然后在创建线程后自动启动这些任务。线程池线程都是后台线程。每个线程都使用默认的堆栈大小,以默认的优先级运行,并处于多线程单元中。如果某个线程在托管代码中空闲(如正在等待某个事件),则线程池将插入另一个辅助线程来使所有处理器保持繁忙。如果所有线程池线程都始终保持繁忙,但队列中包含挂起的工作,则线程池将在一段时间后创建另一个辅助线程但线程的数目永远不会超过最大值。超过最大值的线程原创 2020-11-25 22:05:15 · 102 阅读 · 0 评论 -
AsyncTask的使用及其原理解析
AsyncTask是啥?AsyncTask是Android的一种轻量级的异步任务类,从实现来说,AsyncTask封装了线程池和Handler。它可以在线程池中执行后台任务,把执行的进度和结果传递给主线程并在主线程中更新UI,通过AsyncTask可以更加方便的执行后台任务以及在主线程访问UI,但他不适合进行特别耗时的后台任务。AsyncTask的简单使用public class MainActivity extends AppCompatActivity { private MyAsyncTa原创 2020-11-25 20:19:44 · 606 阅读 · 0 评论 -
jdk1.8之ConcurrentHashMap源码解析
说到ConcurrentHashMap,就会很自然地想到HashTable。有了HashTable为什么还需要ConcurrentHashMap呢?原来虽然HashTable是多线程安全的,但是因为HashTable实现多线程的原理是通过给每一个put、get等函数都加上synchronized关键字。也就是说。同一个时刻,只能有一个线程去操作HashTable,另外一个想要并发操作HashTable的线程只能等待锁释放后才能操作线程,可见HashTable的效率十分低。为了解决HashTable这个低效原创 2020-11-22 00:34:24 · 578 阅读 · 1 评论 -
OkHttp源码解读
简单使用使用okhtt发送一个网络请求是十分的方便的OkHttpClient okHttpClient = new OkHttpClient();Request request = new Request.Builder().url("").build();//建造者设计模式Call call = okHttpClient.newCall(request);call.enqueue(new Callback() { @Override public void onFailure(原创 2020-11-21 14:40:10 · 208 阅读 · 0 评论 -
java锁ReentrantLock原理解析
ReentrantLock起源其实之前刚学习ReentrantLock的时候就觉得很奇怪,为什么有了synchronize却还需要ReentrantLock呢?原来,在synchronize在jdk1.6以前都是一把重量级锁(需要调用系统函数实现的锁,比较耗费系统资源),为了能够使得锁更加轻量级,所以出现了ReentrantLock。(jdk1.5起才有ReentrantLock)用法ReentrantLock r = new ReentrantLock();//默认是非公平锁//创建公平锁:Re原创 2020-11-19 11:04:04 · 315 阅读 · 2 评论 -
CAS算法
cas定义cas是一种能让线程不需要通过阻塞就能够避免多线程安全问题的一种算法,也是乐观锁的技术。它可以不使用锁而保证多线程安全。所以cas也是一种无锁算法。CAS的全称是compare and swap(比较并且交换)。其实cas算法实现过程比较简单,就是维护了3个变量:当前内存值V、旧的预期值A、即将更新的值B。通过while循环不断获取当前内存中的数值V,如果V等于A,就把V赋值为B;整个比较并交换的操作是原子操作。while(V!=A){}V=B;cas存在问题1、ABA问题ABA原创 2020-11-18 22:33:35 · 7067 阅读 · 2 评论 -
jdk1.8之HashMap底层原理
通俗概括可以通俗地理解HashMap是一个存储元素为链表的数组。首先,用户调用put(key,value)方法存储一对键值对的时候。会先调用key.hash()获取key的哈希值,通过这个哈希值确定这对键值对应该存储在数组中的位置,如果这个位置上已经存储有元素了,就说明发生了哈希冲突了。这时候就是通过将新的键值对放在旧的键值对后面,形成链表。如果链表过长的话,会装换成红黑树以便提高元素的查找效率。同时,hashmap的扩容因子是0.75,初始容量是16,就是当该hashmap中的元素总数大于 现容量x扩原创 2020-11-18 22:05:17 · 292 阅读 · 0 评论