
Java并发编程
文章平均质量分 75
z啵唧啵唧
vx:___zhengbo
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
线程有哪些状态?
线程的状态原创 2022-06-08 15:11:58 · 132 阅读 · 0 评论 -
线程池浅学
线程池 自定义线程池 自定义线程池(没有等待时限,当我们的任务执行完毕之后线程还在继续等待) package com.zb.juc.test; import lombok.extern.slf4j.Slf4j; import java.util.ArrayDeque; import java.util.Deque; import java.util.HashSet; import java.util.concurrent.TimeUnit; import java.util.concurrent.原创 2022-05-09 13:43:58 · 356 阅读 · 0 评论 -
深入理解AQS
深入理解AQS AQS 概念 是一种阻塞式锁和相关的同步器工具的框架 特点 用state属性来表示资源的状态(分为独占模式和共享模式),子类需要定义如何维护这个状态,控制如何获取和释放锁 getState获取state状态 setState设置state状态 compareAndSetState 利用cas机制设置state状态 独占模式是只有一个线程能够访问资源,共享模式是可以允许多个线程访问资源 提供了基于队列的等待队列,类似于Monitor的EntryList 条件变量来实现等待,唤醒机制原创 2022-05-09 13:35:04 · 344 阅读 · 0 评论 -
CAS和Unsafe
五、CAS CAS实现锁的原理 @Slf4j(topic = "c.LockCas") public class LockCas { /** * 0表示没有加锁 * 1表示加锁 */ private AtomicInteger state = new AtomicInteger(0); public void lock() { //实际上在这个地方会存在空运转的问题 while (true) {原创 2022-05-09 13:29:15 · 214 阅读 · 0 评论 -
共享模式之内存
四、共享模式之内存 4.1java内存模型 JMM即Java Memory Model,他定义了主存,工作内存抽象概念,底层对应着cpu寄存器,缓存、硬件内存、cpu指令优化等。 JMM主要体现在以下几个方面 原子性:保证指令不会受到线程上下文切换 可见性:保证指令不会受到cpu缓存的影响 有序性:保证指令不会受到指令cpu指令并行优化的影响 4.2可见性 退不出的循环 Volatile原理 volatile的底层实现原理是内存屏障 对volatile变量的写指令后会加入写屏障 对volatile变原创 2022-05-09 13:26:14 · 150 阅读 · 0 评论 -
共享内存、管程
三、共享内存、管程 3.1 共享变量带来的问题 临界区 一个线程在运行多个线程本身没有问题 问题出现在多个线程访问共享的变量 多个线程读共享资源实际上也没有问题 多个线程在写共享资源的时候很有可能会发生指令交错的问题,就会出现问题 一段代码块如果存在对共享资源进行多线程读写操作,称这段代码块为临界区 竞态条件 多个线程在临界条件区执行,由于代码的执行序列不同而导致结果无法预测,称之为发生了竞态条件 public class test5 { static int counter =0;原创 2022-04-17 22:06:28 · 416 阅读 · 0 评论 -
Java线程
二、Java线程 1.创建线程的方式 1.1 方式1 继承Thread类然后重写run方法,调用start方法来进行线程的启动 package com.zb.juc.test; import lombok.extern.slf4j.Slf4j; /** * @Description: 创建线程的方式1 * @Author:啵唧啵唧~~ * @Date:2022/3/29 */ @Slf4j(topic = "c.Test1") public class test1 { public原创 2022-03-30 21:13:49 · 640 阅读 · 0 评论 -
进程和线程
文章目录一、进程和线程的详解1、进程和线程1.1进程和线程进程线程1.2并发和并行1.3应用同步异步设计结论 一、进程和线程的详解 1、进程和线程 1.1进程和线程 进程 进程由指令和数据组成、但是这些指令要运行、数据要读写,就必须将指令加载到cpu中,将数据加载到内存当中,在指令运行运行的过程中还需要用到磁盘、网络设备等设备。进程就是来加载指令、管理内存、管理io的。 当一个程序被运行,将磁盘中的代码加载到内存中的时候就开启了一个进程。 进程可以被看作是一个具体的实例。大部分程序可以运行多个实例进程(如原创 2022-03-29 02:33:22 · 617 阅读 · 0 评论