![](https://img-blog.csdnimg.cn/20200229163027713.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
Java 并发编程
学无止境,坚持是我一生的追求!!!
愿你慢慢变强
愿你有好运气,如果没有,愿你在不幸中学会慈悲。
愿你被很多人爱,如果没用,愿你在寂寞中学会宽容。
展开
-
死锁编码及定位分析-----你应该了解的
是什么死锁是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力干涉那它们都将无法推进下去,如果系统资源充足,进程的资源请求都能够得到满足,死锁出现的可能性就很低,否则就会因争夺有限的资源而陷入死锁。产生死锁主要原因系统资源不足进程运行推进的顺序不合适资源分配不当代码package com.brian.interview.study.thread;...原创 2020-03-02 21:31:50 · 148 阅读 · 0 评论 -
线程池在生产上如何设置合理参数
谈谈线程池的拒绝策略是什么等待队列也已经满了,再也塞不下新任务了同时,线程池中的 max 线程也达到了,无法继续为新任务服务。这时候我们就需要拒绝策略机制合理的处理这个问题。JDK内置的拒绝策略AbortPolicy(默认):直接抛出 RejectedExecutionException 异常阻止系统正常运行。CallerRunsPolicy:“调用者运行”一种调节机制,该策略既...原创 2020-03-02 13:58:37 · 1229 阅读 · 0 评论 -
谈谈线程池,谈谈对ThreadPoolExecutor的理解
为什么用线程池,优势线程池做的工作主要是控制运行的线程的数量,处理过程中将任务放入队列,然后在线程创建后启动这些任务,如果线程数量超过了最大数量超出数量的线程排队等待,等其它线程执行完毕,再从队列中取出任务来执行。他的主要特点为:线程复用;控制最大并发数;管理线程。第一:降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。第二:提高响应速度。当任务到达时,任务可以不需要的等...原创 2020-03-02 09:06:55 · 525 阅读 · 0 评论 -
谈谈阻塞队列
队列 + 阻塞队列阻塞队列,顾名思义,首先它是一个队列,而一个阻塞队列在数据结构中所起的作用大致如下图所示:当阻塞队列是空时,从队列中获取元素的操作将会被阻塞。当阻塞队列是满时,往队列里添加元素的操作将会被阻塞。试图从空的阻塞队列中获取元素的线程将会被阻塞,直到其他的线程往空的队列插入新的元素。同样试图往已满的阻塞队列中添加新元素的线程同样也会被阻塞,直到其他的线程从列中移除一个或者...原创 2020-03-02 09:00:22 · 227 阅读 · 0 评论 -
CountDownLatch / CyclicBarrier / Semaphore 的介绍
CountDownLatch让一些线程阻塞直到另一些线程完成一系列操作后才被唤醒package com.brian.interview.study.thread;import com.brian.interview.enums.CountryEnum;import java.util.concurrent.CountDownLatch;/** * Copyright (c) 20...原创 2020-03-01 17:53:37 · 114 阅读 · 0 评论 -
谈对公平锁/非公平锁/可重入锁/递归锁/自旋锁的理解?请手写一个自旋锁
公平和非公平锁是什么公平锁: 是指多个线程按照申请锁的顺序来获取锁, 类似排队打饭, 先来后到。非公平锁: 是指多个线程获取锁的顺序并不是按照申请锁的顺序,有可能后申请的线程比先申请的线程优先获取锁,在高并发的情况下, 有可能会造成优先级反转或者饥饿现象两者的区别公平锁 / 非公平锁并发包中 ReentrantLock 的创建可以指定构造函数的 boolean 类型来得到公平锁或非公...原创 2020-03-01 09:46:21 · 472 阅读 · 0 评论 -
synchronized 和 lock 有什么区别?用新的 lock 有什么好处?-----你应该了解的
1、原始构成synchronized 是关键字属于 JVM 层面, monitorenter(底层是通过 monitor 对象来完成, 其实 wait/notify 等方法也依赖于 monitor 对象只有在同步块或方法中才能调 wait/notify 等方法)&...原创 2020-02-29 15:38:48 · 579 阅读 · 0 评论 -
我们知道ArrayList是线程不安全,请编码写一个不安全的案例并给出解决方案。
解决方案 1package com.brian.interview.study.thread;/** * Copyright (c) 2020 ZJU All Rights Reserved * <p> * Project: JavaSomeDemo * Package: com.brian.interview.study.thread * Version: 1.0 ...原创 2020-02-28 23:26:54 · 359 阅读 · 0 评论 -
谈谈原子类AtomicInteger的ABA问题?原子更新引用知道吗?
ABA 问题怎么产生的CAS会导致"ABA问题"。CAS算法实现一个重要前提需要取出内存中某时刻的数据并在当下时刻比较并替换,那么在这个时间差类会导致数据的变化。比如说一个线程one从内存位置V中取出A,这时候另一个线程two也从内存中取出A,并且线程two进行了一些操作将值变成了B,然后线程two又将V位置的数据变成A,这时候线程one进行CAS操作发现内存中仍然是A,然后线程one操作...原创 2020-02-28 22:39:25 · 854 阅读 · 5 评论 -
CAS你知道吗?
CAS 是什么???1、比较并交换(CompareAndSet)通过简单的Demo来看package com.brian.interview.study.thread;/** * Copyright (c) 2020 ZJU All Rights Reserved * <p> * Project: JavaSomeDemo * Package: com.brian.in...原创 2020-02-28 21:52:48 · 229 阅读 · 0 评论 -
关于 volatile 你知多少???
谈谈你对 volatile 的理解1、volatile 是 Java 虚拟机提供的轻量级的同步机制保证可见性不保证原子性禁止指令重排2、谈谈JMM(Java 内存模型)JMM(Java内存模型Java Memory Model,简称JMM)本身是一种抽象的概念并不真实存在,它描述的是一组规则或规范,通过这组规范定义了程序中各个变量(包括实例字段,静态字段和构成数组对象的元素)的访问...原创 2020-02-28 19:58:36 · 2545 阅读 · 0 评论