并发编程
文章平均质量分 50
九月木码
这个作者很懒,什么都没留下…
展开
-
HashMap与ConcurrentHashMap
前言Map 这样的Key Value在软件开发中是非常经典的结构,常用于在内存中存放数据。本篇主要想讨论 ConcurrentHashMap 这样一个并发容器,在正式开始之前我觉得有必要谈谈 HashMap,没有它就不会有后面的 ConcurrentHashMap。HashMap众所周知 HashMap 底层是基于数组 + 链表组成的,不过在 jdk1.7 和 1.8 中具...转载 2019-11-17 17:35:25 · 185 阅读 · 0 评论 -
死锁
死锁的定义 两个或两个以上的进程因竞争资源,而处于互相等待的状态,如果没有外力作用,他们都将无法推进下去。典型例子就是哲学家进餐问题。 举个例子 上面的内容可能有些抽象,因此我们举个例子来描述,如果此时有一个线程A,按照先锁a再获得锁b的的顺序获得锁,而在此同时又有另外一个线程B,按照先锁b再锁a的顺序获得锁。如下图所示:我们用一段代码来模拟上述过程...原创 2019-11-14 15:12:43 · 291 阅读 · 0 评论 -
Java 多线程事务回滚 ——多线程插入数据库时事务控制(转载)
背景 日常项目中,经常会出现一个场景,同时批量插入数据库数据,由于逻辑复杂或者其它原因,我们无法使用sql进行批量插入。串行效率低,耗时长,为了提高效率,这个时候我们首先想到多线程并发插入,但是如何控制事务呢 … 直接上干货实现效果 开启多条子线程,并发插入数据库 当其中一条线程出现异常,或者处理结果为非预期结果,则全部线程均回滚 代码实现@Se...转载 2019-11-07 16:05:40 · 5888 阅读 · 0 评论 -
java线程组(ThreadGroup)
线程组概念理解 在java的多线程处理中有线程组ThreadGroup的概念,ThreadGroup是为了方便线程管理出现了,可以统一设定线程组的一些属性,比如setDaemon,设置未处理异常的处理方法,设置统一的安全策略等等;也可以通过线程组方便的获得线程的一些信息。 每一个ThreadGroup都可以包含一组的子线程和一组子线程组,在一个进程中线程组是以树形的...原创 2019-11-04 21:19:23 · 1915 阅读 · 0 评论 -
多线程处理集合
@Override public TotalPaymentPpdSettlementDTO querySettlementTotalFee(Integer channelTye, Long startDate, Long endDate ) { TotalPaymentPpdSettlementDTO paymentDto = new TotalPaymentPpdSettl...原创 2019-11-04 20:10:47 · 362 阅读 · 0 评论 -
线程池
如果开发中用到多线程,基本上就使用java的线程池,主要原因: 1、避免线程的重复创建 2、限流(当超过指定的阈值时会有一些拒绝策略)最初始的线程池的构建方式:public ThreadPoolExecutor(int corePoolSize, //核心线程数 int maximumPoolS...原创 2019-11-03 17:44:29 · 163 阅读 · 0 评论 -
CountDownLatch、CyclicBarrier 、Semaphore 与 Atomic
CountDownLatch countDownLatch主要有两个方法,countdown()与await()public class CountDownLatchDemo { public static void main(String[] args) throws InterruptedException { //计数器是3 Count...原创 2019-10-31 21:41:34 · 170 阅读 · 0 评论 -
Lock的使用、AQS原理分析、Condition的使用
jvm提供了关键字sychronized与volatile去实现线程安全。而java层面是基于juc(java.util.current)包去实现线程安全。 Lock接口 1、sychronized与lock的区别 lock与sychronized都能达到相同的效果,保证线程的原子性,可见性,一致性。但是lock比sychronied更加灵活...原创 2019-10-31 15:43:22 · 301 阅读 · 0 评论 -
并发编程----JMM模型,volatile,sychronized
JMM(java 内存 模型) JMM(java 内存模型)是一种规范,解决线程中数据不一致问题(可见性,原子性,一致性),主要解决缓存一致性问题。 JMM模型图示: JMM抽象模型多线程情况JMM模型中会产生 原子性问题,可见性问题。有序性问题是由 1、编译器指令重拍,2、处理器指令重排 3内存系统的重排序产生的。JMM如何解决原子性...原创 2019-10-23 21:47:32 · 332 阅读 · 0 评论 -
编发编程基础
进程 进程 就是分配资源的最小单位,进程可以实现宏观上(cpu时间片不断去切换)的并发,单核任意一个时刻cpu只会有一个任务去执行。 指令切换要对指令进行隔离:给每一个进程分配内存地址空间,并且不同的进程空间是不会相互干扰的, 进程需要记住每个指令运行的行数,计数器。线程 一个进程可以包含多个线程,每个线程可以有一个独立的子任务.利用...原创 2019-10-23 14:23:46 · 259 阅读 · 0 评论