
Java并发编程
文章平均质量分 98
鮀城小帅
在工作中一步步学习、进步,充实工作也充实生活。
展开
-
Java并发编程 (十) 多线程并发拓展
一、死锁1、死锁的定义所谓的死锁是指两个或两个以上的线程在等待执行的过程中,因为竞争资源而造成的一种互相等待的现象。若不受外力作用,他们都将无法推进下去。此时,处于系统中所处的状态就是死锁。2、发生死锁所必须具备的条件:互斥条件:它是指进程对所分配的资源进行排他性的使用,在一定时间内,某资源只由一个进程在用,如果此时还有其他进程请求资源,请求者只能等待。直到占有资源的进程用完或...原创 2019-11-19 16:10:51 · 217 阅读 · 0 评论 -
Java并发编程 (九) 线程调度-线程池
声明:实际上,在开发中并不会普遍的使用Thread,因为它具有一些弊端,对并发性能的影响比较大,如下: new Thread 弊端: 每次 new Thread 新建对象,性能差; 线程缺乏统一管理,可能无限制的新建线程,相互竞争,有可能占用过多系统资源导致死机或OOM; 缺少更多功能,如更多执行、定期执行、线程中断一、...原创 2019-11-19 15:36:07 · 539 阅读 · 0 评论 -
Java并发编程 (八) J.U.C组件拓展
一、J.U.C-FutureTask-1FutureTask组件,该组件是JUC中的。但该组件不是 AQS 的子类。创建一个线程通常有两种方式,一种是直接继承Thread类,另一红就是实现Runnable接口,这俩种方式有一个共同的缺陷,那就是在完成任务之后无法获取执行结果。从Java1.5开始提供了Callable和FutureTask,可以在任务完成之后得到任务执行的结果。1、Ca...原创 2019-11-19 14:31:08 · 228 阅读 · 0 评论 -
Java并发编程 (七) J.U.C之AQS
一、J.U.C之AQS-介绍1、定义:AbstractQueuedSynchronizer简称AQS,AQS是JUC的核心,AQS是并发类的重中之重,可以用来构建锁的同步框架。2、AQS底层的数据结构:3、AQS的特点:使用Node实现FIFO队列,可以用于构建锁或者其它同步装置的基础框架 利用了一个int类型表示状态 使用方法是继承; 子类通过继承并通过...原创 2019-11-19 12:05:34 · 451 阅读 · 0 评论 -
Java并发编程 (六) 线程安全策略
一、不可变对象-1 有一种安全的发布对象,即不可变对象。1、不可变对象需要满足的条件 ① 对象创建以后其状态就不能修改 ② 对象所有域都是final类型 ③ 对象是正确创建的(在对象创建期间,this引用没有逸出)2、final关键字:final 关键字可以用来修饰:类、方法、变量修饰类:不能被继承,final类中的...原创 2019-11-19 10:34:40 · 914 阅读 · 0 评论 -
Java并发编程 (五) 线程安全性
一、安全发布对象-发布与逸出1、发布与逸出定义发布对象 : 使一个对象能够被当前范围之外的代码所使用对象逸出: 一种错误的发布。当一个对象还没有构造完成时,就使它被其他线程所见。2、开发工作中涉及到的发布对象:比如通过类的非私有方法,返回对象的引用;或者通过共有静态变量发布对象。3、发布对象代码演示:package com.mmall.concurrency....原创 2019-11-18 16:56:01 · 168 阅读 · 0 评论 -
Java并发编程 (四) 线程安全性
一、线程安全性-原子性-atomic-11、线程安全性定义: 当某个线程访问某个类时,不管运行时环境采用何种调度方式或者这些锦城南将如何交替执行,并且在主调代码中不需要任何额外的同步或协同,这个类都能表现出正确的行为,那么就称这个类是线程安全的。特点:原子性:提供了互斥访问,同一时刻只能有一个线程来对它进行操作可见性:一个线程对主内存的修改可以及时的被其他线程观察到...原创 2019-11-18 16:18:25 · 219 阅读 · 0 评论 -
Java并发编程 (三) 项目准备
一、案例环境初始化1、环境搭建与准备Spring Boot 项目,https://start.spring.io/Git 管理代码,https://github.com/wushaopei/concurrency码云:https://gitee.com/wushaopei点击Generate -Ctrl + 将项目下载到本地,并解压。使用git bash 将码云仓库下载...原创 2019-11-18 13:00:11 · 403 阅读 · 0 评论 -
Java并发编程 (二) 并发基础
一、CPU多级缓存-缓存一致性1、CPU多级缓存上图展示的是CPU高级缓存的配置,数据的读取和存储都经过高速缓存,CPU核心与高速缓存之间有一条特殊的快速通道;在这个简化的图中,主存和缓存都连接在系统总线上,这条总线同时还用于其他组件的通信。高速缓存出现后不久,系统变得更加复杂,高速缓存和主存之间的速度差异被拉大,直到加入L1d(又叫一级缓存)的缓存,新加入的这一个缓存比高速缓...原创 2019-11-18 10:51:00 · 266 阅读 · 0 评论 -
Java并发编程 (一) 导读
一、并发编程相关技术栈1、内容主要为高并发的解决思路与手段,具体涉及:2、涉及的基础知识与核心知识:3、并发及并发的线程安全处理4、高并发的思路及手段5、高并发所涉及的技术 总体架构: Spring Boot 、Maven、JDK8、MySQL 基础组件: Mybatis、Guava、Lombok、Redis、Kafka 高级组件(类):Jod...原创 2019-11-04 16:49:48 · 246 阅读 · 0 评论