
java并发编程
文章平均质量分 81
详细记录学习并发编程的心得,从并发编程体系,到每个体系的详细学习
余生爱静
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Java 并发包锁实现的精髓----队列同步器(AbstractQueuedSynchronizer)
队列同步器理解原创 2022-08-15 14:37:44 · 394 阅读 · 0 评论 -
并发编程概括
并发编程是什么所谓并发编程是指在一台处理器上“同时”处理多个任务。并发是在同一实体上的多个事件。多个事件在同一时间间隔发生并发编程的目标并发编程的目标是充分的利用处理器的每一个核,以达到最高的处理性能并发编程解决的核心问题第一、分工所谓分工指的是如何高效的拆解任务并分配给线程1、Executor和线程池2、Fork/Join3、Future4、Balking模式5、Threa...原创 2019-05-23 01:52:31 · 3401 阅读 · 0 评论 -
Java 线程概述
在详细介绍并发之前,今天重点学习一下线程原创 2019-05-29 06:49:51 · 394 阅读 · 0 评论 -
线程池-ThreadPool
使用背景虽然在 Java 语言中创建线程看上去就像创建一个对象一样简单,只需要 new Thread() 就可以了,但实际上创建线程远不是创建一个对象那么简单。创建对象,仅仅是在 JVM 的堆里分配一块内存而已;而创建一个线程,却需要调用操作系统内核的 API,然后操作系统要为线程分配一系列的资源,这个成本就很高了,所以线程是一个重量级的对象,应该避免频繁创建和销毁。 那如何避免呢?应对方案...原创 2019-06-07 17:28:16 · 461 阅读 · 0 评论 -
线程池核心之ThreadPoolExecutor
这张线程池类图会始终贯穿线程池的始终。今天要学习的主角就是ThreadPoolExecutor工作流程ThreadPoolExecutor是java JDK中对线程池这一概念的实现,首先我们来看一下它的工作流程,然后在通过源码,来了解JDK中对工作流程的实现从图中可以看出,当用户提交一个任务的时候,线程池的处理流程:1)线程池判断线程池里的核心线程是否都在执行任务,如果不是,则创建新...原创 2019-06-08 17:56:09 · 1444 阅读 · 0 评论 -
线程池核心之ScheduledThreadPoolExecutor
从线程池的UML类图可以看到,ScheduledThreadPoolExecutor是ThreadPoolExecutor的子类,所以它拥有ThreadPoolExecutor的所有功能,同时它又实现了ScheduledExecutorService接口,所以,这个接口的实现又赋予它新的功能,那就是定时任务的功能...原创 2019-06-15 09:31:24 · 3014 阅读 · 0 评论 -
并发编程三大bug产生背景
这些年,我们的CPU、内存、I/O设备都在不断迭代,不断朝着更快的方向发展。但是,在这个快速迭代的过程中,有一个核心矛盾一直存在,就是 三者的速度差异。CPU和内存的速度差异可以描述为:CPU是天上一天,内存则是地上一年(假设CPU执行一条指令需要一天,那么CPU读写内存的等待一年)。内存和I/O设备的速度差异就更大了,内存是天上一天,I/O设备是地上10年。程序里大部分语句都要访问内存,有些还...原创 2019-06-17 07:27:44 · 267 阅读 · 0 评论 -
并发编程可见性和有序性解决方案之java内存模型
我们已经知道转载 2019-07-03 06:27:18 · 261 阅读 · 0 评论 -
并发编程原子性解决方案-----互斥
之前总结过,一个或者多个操作在CPU执行的过程中不被中断的特性,称为“原子性”。原子性问题的源头是 线程切换,如果能够禁用线程切换不就能解决这个问题了吗?而操作系统做线程的切换是依赖CPU中断的,所以禁用CPU发生中断就能够禁止线程切换。在早期单核 CPU 时代,这个方案的确是可行的,而且也有很多应用案例,但是并不适合多核场景。这里我们以 32 位 CPU 上执行 long 型变量的写操作为例...原创 2019-07-03 07:04:33 · 416 阅读 · 0 评论 -
Java 语言提供的锁技术:synchronized
Java 语言提供的锁技术:synchronized锁是一种通用的技术方案,Java 语言提供的 synchronized 关键字,就是锁的一种实现。synchronized 关键字可以用来修饰方法,也可以用来修饰代码块,它的使用示例基本上都是下面这个样子:class X { // 修饰非静态方法 synchronized void foo() { // 临界区 } ...原创 2019-07-09 07:33:38 · 346 阅读 · 0 评论 -
Java SDK并发包的锁------Lock
我们提到过在并发编程领域,有两大核心问题:一个是互斥,即同一时刻只允许一个线程访问共享资源;另一个是同步,即线程之间如何通信、协作。这两大问题,管程都是能够解决的。Java SDK 并发包通过 Lock 和 Condition 两个接口来实现管程,其中 Lock 用于解决互斥问题,Condition 用于解决同步问题。...原创 2019-07-15 06:02:06 · 555 阅读 · 0 评论