![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java并发编程
文章平均质量分 75
z啵唧啵唧
vx:_cherishxs
展开
-
线程有哪些状态?
线程的状态原创 2022-06-08 15:11:58 · 97 阅读 · 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 · 294 阅读 · 0 评论 -
深入理解AQS
深入理解AQSAQS概念是一种阻塞式锁和相关的同步器工具的框架特点用state属性来表示资源的状态(分为独占模式和共享模式),子类需要定义如何维护这个状态,控制如何获取和释放锁getState获取state状态setState设置state状态compareAndSetState 利用cas机制设置state状态独占模式是只有一个线程能够访问资源,共享模式是可以允许多个线程访问资源提供了基于队列的等待队列,类似于Monitor的EntryList条件变量来实现等待,唤醒机制原创 2022-05-09 13:35:04 · 290 阅读 · 0 评论 -
CAS和Unsafe
五、CASCAS实现锁的原理@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 · 154 阅读 · 0 评论 -
共享模式之内存
四、共享模式之内存4.1java内存模型JMM即Java Memory Model,他定义了主存,工作内存抽象概念,底层对应着cpu寄存器,缓存、硬件内存、cpu指令优化等。JMM主要体现在以下几个方面原子性:保证指令不会受到线程上下文切换可见性:保证指令不会受到cpu缓存的影响有序性:保证指令不会受到指令cpu指令并行优化的影响4.2可见性退不出的循环Volatile原理volatile的底层实现原理是内存屏障对volatile变量的写指令后会加入写屏障对volatile变原创 2022-05-09 13:26:14 · 122 阅读 · 0 评论 -
共享内存、管程
三、共享内存、管程3.1 共享变量带来的问题临界区一个线程在运行多个线程本身没有问题问题出现在多个线程访问共享的变量多个线程读共享资源实际上也没有问题多个线程在写共享资源的时候很有可能会发生指令交错的问题,就会出现问题一段代码块如果存在对共享资源进行多线程读写操作,称这段代码块为临界区竞态条件多个线程在临界条件区执行,由于代码的执行序列不同而导致结果无法预测,称之为发生了竞态条件public class test5 { static int counter =0;原创 2022-04-17 22:06:28 · 328 阅读 · 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 · 585 阅读 · 0 评论 -
进程和线程
文章目录一、进程和线程的详解1、进程和线程1.1进程和线程进程线程1.2并发和并行1.3应用同步异步设计结论一、进程和线程的详解1、进程和线程1.1进程和线程进程进程由指令和数据组成、但是这些指令要运行、数据要读写,就必须将指令加载到cpu中,将数据加载到内存当中,在指令运行运行的过程中还需要用到磁盘、网络设备等设备。进程就是来加载指令、管理内存、管理io的。当一个程序被运行,将磁盘中的代码加载到内存中的时候就开启了一个进程。进程可以被看作是一个具体的实例。大部分程序可以运行多个实例进程(如原创 2022-03-29 02:33:22 · 575 阅读 · 0 评论