![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java并发编程
文章平均质量分 89
苹水相峰
我一个工作10年的软件开发工作者,现在想写一专业相关的文章,希望可以帮助大家,文章是根据自己的理解写的,若有不正确定的地方,请广大网友指出,我会虚心接受并加以修改,谢谢大家。
展开
-
12.并发之ForkJoin框架详解
FoekJoinPool 与内部类 WorkQueue 共享的一些常量FoekJoinPool 中相关常量和实例字段AC: 正在运行工作线程数减去目标并行度,高16位TC:总工作线程数减去目标并行度,中高16位SS: 栈顶等待线程的版本计数和状态,中低16位ID:栈顶WorkQueue在池中的索引(poollndex),低16位。原创 2022-10-29 13:30:33 · 1525 阅读 · 0 评论 -
11.定时任务&定时线程池详解
当我们不用任务框架时,我们想自己写一个定时任务时,我们能想起那个工具类呢?Timer ?还有吗?不知道了,下面我们要讲下ScheduledThreadPoolExecutor,定时任务线程池,可以执行一次任务,还可以执行周期性任务。原创 2022-10-27 13:07:11 · 6835 阅读 · 0 评论 -
10.并发编程之Executor线程池原理
线程池”,顾名思义就是一个线程缓存,线程是稀缺资源,如果被无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,因此 Java 中提供线程池对线程进行统一分配、调优和监控 。这里大致介绍线程池的大致执行过程及参数的讲解。原创 2022-10-25 16:40:03 · 312 阅读 · 0 评论 -
9.2 ArrayList&CopyOnWriteArrayList详解
ArrayList是Java集合框架中的一个重要的类,它继承于AbstractList,实现了List接口,是一个长度可变的集合,提供了增删改查的功能,允许null的存在。ArrayList类还是实现了RandomAccess接口,可以对元素进行快速访问。实现了Serializable接口,说明ArrayList可以被序列化 。ArrayList线程不安全,线程安全的版本是CopyOnWriteArrayList。原创 2022-10-23 11:33:43 · 704 阅读 · 0 评论 -
9.1 Hashtable与ConcurrentHashMap详解
Hashtable 和HashMap用法是和底层的结构都是数组+链表+红黑树,都是key-value键值对数据的存储,最大的区别就是HashMap线程不安全,Hashtable 线程安全。HashMap当什么时候会发生线程不安全呢?当两个线程同时新增在数组上同一位置的数据时(同一链表数据),两线程同时操作数据可能被冲掉。原创 2022-10-22 21:32:51 · 597 阅读 · 0 评论 -
9.0 HashMap底层原理及部分源码分析
HashMap 在JDK1.7版本时底层数据结构是数组+链表,但是1.7时HashMap的并发扩容会导致死循环;JDK1.8时底层的数据结构变成数组+链表+红黑树,修改了并发扩容逻辑,并且提升了HashMap的性能。原创 2022-10-20 19:14:49 · 351 阅读 · 0 评论 -
8.并发编程之Automic&Unsafe魔法类详解
并发编程的三大 特性:可见性、有序性、原子性,可见性和有序性用volatile、synchronized、Lock可以保证,但是原子性只有synchronized、Lock可以保证,并且在同一时刻只能有一个线程访问来保证原子性的性能低,有更高效的办法来保证原子性吗?当然了,那就是Automic包下有很多可以保证原子性的原子操作。在java中可以通过**锁**和**循环CAS**的方式来实现原子操作。在Atomic包里一共有12个类,四种原子更新方式,分别是原子更新基本类型,原子更新数组,原子更新引用和原子原创 2022-10-19 19:18:26 · 430 阅读 · 0 评论 -
7.CountDownLatch&Semaphore的应用
BlockingQueue、Semaphore 和CountDownLatch 线程之间通信的桥梁和工具 。Semaphore可以应用到服务调用之间的限流;CountDownLatch和CyclicBarrier区别如下:CountDownLatch是以减数的方式而CyclicBarrier是以加数的方式;CountDownLatch强调的是一个等待其他多个线程而CyclicBarrier是一组线程相互等待;CountDownLatch不可重复利用而CyclicBarrier可重复利用。原创 2022-10-18 21:22:58 · 470 阅读 · 0 评论 -
5.1同步器AQS
AQS是AbstractQueuedSynchronizer抽象类的简写;AQS定义了一套多线程访问共享资源的同步器框架,是一个依赖状态的同步器。AQS的核心是自旋(循环)、CAS算法加锁、LocksSouport(阻塞和唤醒) 和队列(公平锁和非公平锁)。原创 2022-10-18 08:24:53 · 228 阅读 · 0 评论 -
5.0抽象队列同步器AQS引用Lock详解
Java并发编程核心在于iava.util.concurrent包而juc当中的大多数同步器实现都是围绕着共同的基础行为,比如等待队列、条件队列、独占获取、共享获取等,而这个行为的抽象就是基于AbstractQueuedSynchronizer简称AQS,AQS定义了一套多线程访问共享资源的同步器框架,是一个依赖状态(state)的同步器。原创 2022-10-17 20:47:59 · 390 阅读 · 0 评论 -
4.并发编程值synchronized详解
synchronized内置锁是一种对象锁(锁的是对象而非引用),作用粒度是对象,可以用来实现对临界资源的同步互斥访问,是可重入的。**加锁的方式:1、同步实例方法:锁是当前实例对象2、同步类方法:锁是当前类对象,this对象上,new出来的对象上。3、同步代码块:锁是括号里面的对象4、在静态(static)方法上:锁的是类的class对象原创 2022-10-14 17:59:38 · 112 阅读 · 0 评论 -
3.MESI缓存一致协议分析
MESI协议只能保证并发编程中的可见性,并未解决原子性和有序性的问题。MESI协议只对会变指令中执行加锁操作的变量有效,表现到Java中为使用volatile关键字定义的变量或使用加锁操作。MESI协议在下面两种情况会失效:1)CPU不支持缓存协议;2)该变量超过一个缓存行的大小,缓存一致性协议,只针对单个缓存行加锁,此时会变成总线锁。原创 2022-10-12 16:29:20 · 462 阅读 · 0 评论 -
0.Java并发编程
并发编程:实际就是在编程的时候解决并发常见的问题;并发编程的三大特性,可见性、原子性、有序性,掌握好并发的三大特性对于理解并发编程有很大的帮助。讲到并发编程需要提前了解一个概念就是JMM(Java Memory Model)Java内存模型,是一个抽象感念,不是真实存在的,也可以称作是一组规范或规则。JVM运行程序实际就是线程,每个线程创建时都会创建一个工作内存,存储线程私有数据,而JMM模型规定所有的变量都存储在主内存,所有线程共享。原创 2022-10-11 17:42:09 · 517 阅读 · 0 评论 -
2.2并发三大特性可见性、原子性、有序性
并发三大特性可见性、原子性、有序性是什么原因引起的,怎样可以避免原创 2022-09-30 17:07:17 · 461 阅读 · 0 评论 -
2.1Java内存模型之JMM内存模型规范详解
Java内存模型(Java MemoryModel简称JMM)是一种抽象的概念,并不真实存在,它描述的是一组规则或规范,通过这组规范定义了程序中各个变量(包括实例字段,静态字段和构成数组对象的元素)的访问方式。JVM运行程序的实体是线程,而每个线程创建时JVM都会为其创建一个工作内存(有些地方称为栈空间),用于存储线程私有的数据,而Java内存模型中规定所有变量都存储在主内存,主内存是共享内存区域,所有线程都可以访问,但线程对变量的操作(读取赋值等)必须在工作内存中进行,首先要将变量从主内存拷贝的自己的工作原创 2022-09-30 13:22:21 · 494 阅读 · 0 评论 -
1.2操作系统内存管理和进程与线程
总结:JVM是采用的哪一种线程模型?是内核线程模型,分析操作系统管理及进程和线程的区别原创 2022-09-29 10:09:37 · 181 阅读 · 0 评论 -
1.1操作系统底层工作的整体认识和CPU结构详解
主要讲计算机核心组成部分、CPU的指令结构、CPU缓存结构和CPU安全等级。原创 2022-09-29 09:28:14 · 371 阅读 · 0 评论