![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
并发编程
文章平均质量分 94
java金融
公众号:java金融
展开
-
阿里一面CyclicBarrier和CountDownLatch的区别是啥
引言前面一篇文章我们《》它有一个缺点,就是它的计数器只能够使用一次,也就是说当计数器(state)减到为 0的时候,如果 再有线程调用去 await() 方法,该线程会直接通过,不会再起到等待其他线程执行结果起到同步的作用。为了解决这个问题CyclicBarrier就应运而生了。什么是CyclicBarrierCyclicBarrier是什么?把它拆开来翻译就是循环(Cycle)和屏障(Barrier)它的主要作用其实和CountDownLanch差不多,都是让一组线程到达一个屏障时被阻塞,直到最原创 2021-03-18 10:21:47 · 203 阅读 · 0 评论 -
Java高并发编程基础三大利器之CountDownLatch
#引言上一篇问章我们介绍了AQS的信号量Semaphore,接下来#什么是#引言上一篇问章我们介绍了AQS的信号量Semaphore,接下来#什么是countDownLatchCountDownLatch是通过一个计数器来实现的,计数器的初始值是线程的数量。每当一个线程执行完毕后,计数器的值就-1,当计数器的值为0时,表示所有线程都执行完毕,然后在闭锁上等待的线程就可以恢复工作了。#应用场景说了这么多,CountDownLatch可以用来干什么呢?有什么应用场景?实际项目中有应用的场景吗?这应原创 2021-03-11 10:20:02 · 165 阅读 · 2 评论 -
Java高并发编程基础三大利器之Semaphore
什么是共享锁原创 2021-03-04 10:16:30 · 193 阅读 · 0 评论 -
java高并发基础之AQS
引言曾经有一道比较比较经典的面试题“你能够说说java的并发包下面有哪些常见的类?”大多数人应该都可以说出CountDownLatch、CyclicBarrier、Sempahore多线程并发三大利器。这三大利器都是通过AbstractQueuedSynchronizer抽象类(下面简写AQS)来实现的,所以学习三大利器之前我们有必要先来学习下AQS。AQS是一种提供了原子式管理同步状态、阻塞和唤醒线程功能以及队列模型的简单框架AQS结构说到同步我们如何来保证同步?大家第一印象肯定是加锁了,原创 2021-03-01 16:04:03 · 132 阅读 · 2 评论 -
阿里面试:Java的synchronized 能防止指令重排序吗?
阿里面试:面试官问我Java的synchronized 能防止指令重排序吗?我犹豫了原创 2020-12-04 17:20:54 · 2970 阅读 · 9 评论 -
【Java并发编程】阿里最喜欢问的几道线程池的面试题?
引言上一篇文章我们有介绍过线程池的一个基本执行流程、以及它的7个核心参数,以及每个参数的作用、以及如何去使用线程池。还留了几个小问题。这篇文章我们就来分析下上篇文章的几个小问题线程池是否区分核心线程和非核心线程?如何保证核心线程不被销毁?线程池的线程是如何做到复用的?这个问题的话我们就需要从源码来分析了。线程池执行任务的ThreadPoolExecutor#execute方法为入口 public void execute(Runnable command) { if (comm原创 2020-11-10 12:35:38 · 219 阅读 · 0 评论 -
【Java并发编程】面试必备之线程池
什么是线程池是一种基于池化思想管理线程的工具。池化技术:池化技术简单点来说,就是提前保存大量的资源,以备不时之需。比如我们的对象池,数据库连接池等。线程池好处我们为什么要使用线程池,直接new thread start不好吗?1.降低资源消耗: 通过重复利用已创建的线程来降低线程创建和销毁所造成的消耗。2.提高响应速度: 任务到达时,可以立即执行,不需要等到线程创建再来执行任务。3.提高线程的可管理性:线程是稀缺资源,如果无限制创建,不仅会消耗系统资源,还会因为线程的不合理分布导致资源原创 2020-11-06 12:40:38 · 135 阅读 · 0 评论 -
还在使用Future轮询获取结果吗?CompletionService快来了解下吧。
多线程怎么实时获取结果?Dubbo 的集群容错模式:Forking Cluster可以怎么实现?原创 2020-07-06 13:05:15 · 461 阅读 · 0 评论 -
小白入门多线程,看这篇就够了
面对面试官灵魂三问:什么是多线程?多线程怎么保证线程安全?到底有哪几种方式创建线程?我慌了!原创 2020-06-09 13:04:59 · 282 阅读 · 0 评论 -
史上最全java里面的锁
什么是锁在计算机科学中,锁(lock)或互斥(mutex)是一种同步机制,用于在有许多执行线程的环境中强制对资源的访问限制。锁旨在强制实施互斥排他、并发控制策略。锁通常需要硬件支持才能有效实施。这种支持通常采取一个或多个原子指令的形式,如"test-and-set", “fetch-and-add” or “compare-and-swap””。这些指令允许单个进程测试锁是否空闲,如果空闲,则...原创 2020-04-20 21:20:30 · 504 阅读 · 0 评论 -
线程池的参数动态调整
经典面试题这次的文章还是绕回了我写的第三篇原创文章《有的线程它死了,于是它变成一道面试题》中留下的几个问题:哎,兜兜转转,走走停停。天道好轮回,苍天饶过谁?在这篇文章中我主要回答上面抛出的这个问题:你这几个参数的值怎么来的呀?要回答这个问题,我们得先说说这几个参数是什么,请看截图:其实,官方的注释写的都非常明白了。你看文章的时一定要结合英文,因为英文是 Dou...转载 2020-04-20 00:31:39 · 1399 阅读 · 1 评论 -
记一次jedis并发使用问题JedisException: Could not return the resource to the pool
今天线上突然发现个奇怪的问题项目第一次启动的时候redis报错JedisException: Could not return the resource to the pool直接访问接口的时候不报错,访问页面的时候报这个错。而且只有项目重启的时候才会报这个错,刚开始以为接口问题,仔细分析页面原来这个页面同时加载了好多个接口这些接口都调用了一个方法。而这个方法正好依赖redis。线下自己写个多线程...原创 2018-07-02 16:28:37 · 10999 阅读 · 2 评论 -
mysql数据库优化
1)查看mysql是否开启慢查询日志show variables like 'slow_query_log';2)设置没有索引的记录到慢查询日志set global log_queries_not_using_indexes=on;3)查看超过多长时间的sql进行记录到慢查询日志show variables like 'long_query_time'4)开启慢查询日志原创 2017-06-21 09:33:35 · 1484 阅读 · 0 评论 -
微信网页授权多次回调code请求
最近在做微信网页授权的时候遇到一个问题如果直接从后台把微信授权的url参数什么的拼装好,然后直接redirect 这个url 会导致时不时的多次请求回调的url。网上说是因为网络原因,如果10s没有响应微信会再次响应。我尝试多次感觉并不是这个问题:后面尝试来一个中转页面去跳转这个微信授权请求的url 这个问题得到解决。特地记一下。还有一个问题用测试号使用微信分享的时候如果没有关注的用原创 2017-04-25 17:19:05 · 17169 阅读 · 9 评论 -
junit 测试用例多并发
最近再用测试用例写个多并发,但是测试用例一运行完程序就结束啦。还没有等到多线程运行完。这个时候可以用断点在多线程后面停住或者让主线程睡眠多一些原创 2017-03-13 19:09:25 · 1583 阅读 · 0 评论 -
Java并发编程:阻塞队列
Java并发编程:阻塞队列 在前面几篇文章中,我们讨论了同步容器(Hashtable、Vector),也讨论了并发容器(ConcurrentHashMap、CopyOnWriteArrayList),这些工具都为我们编写多线程程序提供了很大的方便。今天我们来讨论另外一类容器:阻塞队列。 在前面我们接触的队列都是非阻塞队列,比如PriorityQueue、LinkedList(L转载 2017-02-08 12:46:26 · 977 阅读 · 0 评论