有了CopyOnWrite为何又要有ReadWriteLock?
摘要:引言 前文我们有介绍《看了CopyOnWriteArrayList后自己实现了一个CopyOnWriteHashMap》 关于CopyOnWrite容器的,但是它也有一些缺点: 内存占用问题:因为CopyOnWrite的写时复制机制每次进行写操作的时候都会有两个数组对象的内存,如果这个数组对象占用的
阅读全文
阿里一面CyclicBarrier和CountDownLatch的区别是啥
摘要:引言 前面一篇文章我们《Java高并发编程基础三大利器之CountDownLatch》它有一个缺点,就是它的计数器只能够使用一次,也就是说当计数器(state)减到为 0的时候,如果 再有线程调用去 await() 方法,该线程会直接通过,不会再起到等待其他线程执行结果起到同步的作用。为了解决这个问
阅读全文
Java高并发编程基础三大利器之CountDownLatch
摘要:引言 上一篇文章我们介绍了AQS的信号量Semaphore《Java高并发编程基础三大利器之Semaphore》,接下来应该轮到CountDownLatch了。 什么是CountDownLatch CountDownLatch是通过一个计数器来实现的,计数器的初始值是线程的数量。每当一个线程执行完毕
阅读全文
Java并发编程基础三板斧之Semaphore
摘要:引言 最近可以进行个税申报了,还没有申报的同学可以赶紧去试试哦。不过我反正是从上午到下午一直都没有成功的进行申报,一进行申报 就返回“当前访问人数过多,请稍后再试”。为什么有些人就能够申报成功,有些人就直接返回失败。这很明显申报处理资源是有限的, 只能等别人处理完了在来处理你的,你如果运气好可能重试
阅读全文
java高并发编程基础之AQS
摘要:引言 曾经有一道比较比较经典的面试题“你能够说说java的并发包下面有哪些常见的类?”大多数人应该都可以说出 CountDownLatch、CyclicBarrier、Sempahore多线程并发三大利器。这三大利器都是通过AbstractQueuedSynchronizer抽象类(下面简写AQS)
阅读全文
线程上下文传递这四种ThreadLocal还是有必要知道下的!
摘要:什么是ThreadLocal ThreadLocal类顾名思义可以理解为线程本地变量。也就是说如果定义了一个ThreadLocal, 每个线程往这个ThreadLocal中读写是线程隔离,互相之间不会影响的。它提供了一种将可变数据通过每个线程有自己的独立副本从而实现线程封闭的机制。 实际应用 实际开
阅读全文
还在使用Future轮询获取结果吗?CompletionService快来了解下吧。
摘要:背景 二胖上次写完参数校验(《二胖写参数校验的坎坷之路》)之后,领导一直不给他安排其他开发任务,就一直让他看看代码熟悉业务。二胖每天上班除了偶尔跟坐在隔壁的前端小姐姐聊聊天,就是看看这些 枯燥无味的业务代码,无聊的一匹。虽然二胖已是久经职场的老油条了,但是看到同事们的周报都写的满满的,而自己的周报,
阅读全文
【Java并发编程】面试必备之线程池
摘要:什么是线程池 是一种基于池化思想管理线程的工具。 池化技术:池化技术简单点来说,就是提前保存大量的资源,以备不时之需。比如我们的对象池,数据库连接池等。 线程池好处 我们为什么要使用线程池,直接new thread start不好吗? 降低资源消耗: 通过重复利用已创建的线程来降低线程创建和销毁所造
阅读全文
【Java并发编程】阿里最喜欢问的几道线程池的面试题?
摘要:引言 上一篇文章我们有介绍过线程池的一个基本执行流程《【Java并发编程】面试必备之线程池》以及它的7个核心参数,以及每个参数的作用、以及如何去使用线程池 还留了几个小问题。。建议看这篇文章之前可先看下前面那篇文章。这篇文章我们就来分析下上篇文章的几个小问题 线程池是否区分核心线程和非核心线程? 如
阅读全文
mysql数据库优化
摘要:1)查看mysql是否开启慢查询日志show variables like 'slow_query_log';2)设置没有索引的记录到慢查询日志set global log_queries_not_using_indexes=on;3)查看超过多长时间的sql进行记录...
阅读全文
微信网页授权多次回调code请求
摘要:最近在做微信网页授权的时候遇到一个问题如果直接从后台把微信授权的url参数什么的拼装好,然后直接redirect 这个url 会导致时不时的多次请求回调的url。网上说是因为网络原因,如果10s没有响应微信会再次响应。我尝试多次感觉并不是这个问题:后面尝试来一个中转页...
阅读全文
junit 测试用例多并发
摘要:最近再用测试用例写个多并发,但是测试用例一运行完程序就结束啦。还没有等到多线程运行完。这个时候可以用断点在多线程后面停住或者让主线程睡眠多一些
阅读全文
Java并发编程:阻塞队列
摘要:Java并发编程:阻塞队列 在前面几篇文章中,我们讨论了同步容器(Hashtable、Vector),也讨论了并发容器(ConcurrentHashMap、CopyOnWriteArrayList),这些工具都为我们编写多线程程序提供了很大的方便。今天我们来讨论另外...
阅读全文