![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java高并发
多线程、高并发
向日葵班学霸
努力变强
展开
-
Java高并发(六):ReentrantLock
目录LockReentrantLockReentrantReadWriteLockStampedLockReentrantLockReentrantLock实现原理AQSLockJava中的Lock是J.U.C中的一个核心组件,J.U.C(java.util.concurrent)是在并发编程中常用的工具类,里面包含了很多在并发场景中使用的组件,比如线程池、阻塞队列、计时器、同步器、并发集合...原创 2020-02-06 12:50:42 · 231 阅读 · 0 评论 -
Java高并发(五):synchronized
目录synchronizedsynchronized原创 2020-01-22 16:16:25 · 189 阅读 · 0 评论 -
Java高并发(四):volatile
目录volatilevolatile如何保证可见性可见性本质硬件层面volatilevolatile主要是为了保证在多处理器下,共享变量的可见性。可见性在单线程的环境下不会出现问题;但是对于多线程,读写位于不同的线程中时,可能会发生线程读取到的数据不是其他线程写入的最新的值。然而volatile可以解决线程的可见性带来的问题volatile如何保证可见性当成员变量被volatil...原创 2020-01-21 14:24:31 · 312 阅读 · 0 评论 -
Java高并发(三):线程的基本使用和线程的状态
目录线程的应用继承Thread类实现Runnable接口实现Callable线程的生命周期NEWRUNNABLEBLOCKED1、等待阻塞2、同步阻塞3、其他阻塞TIME_WAITINGTERMINATED线程的启动原理线程的应用在Java中,有多种方式来实现多线程,比如继承Thread类,实现Runnable接口,使用ExecutorService、Future、Callable实现带返回...原创 2020-01-20 16:42:18 · 102 阅读 · 0 评论 -
两个线程交替打印
两个线程交替打印使用ReentrantLock实现两个线程交替打印使用ReentrantLock实现两个线程交替打印package com.study.pattern;import java.util.concurrent.CountDownLatch;import java.util.concurrent.locks.Condition;import java.util.concur...原创 2019-12-23 14:11:18 · 414 阅读 · 0 评论 -
Java高并发(二):Java内存模型(多核CPU)
Java内存模型(JMM:Java memory model): 首先思考这样一个问题:有一个变量M = 2,线程A中执行:M= 3;现在,如何让线程B看到M = 3呢? 对于单线程的程序,无需考虑这样一个问题,因为B是在A执行操作之后才去读取M的值,肯定能看到M = 3,但是对于多线程的程序,线程B读取到的M值可能为2,为什么会出现这种现象呢,我们先分析下操作流程: 1、线程...原创 2019-10-24 00:20:51 · 308 阅读 · 0 评论 -
Java高并发(一):什么是线程安全
首先来介绍下两个基本的概念,进程和线程。 进程:一个具有独立功能的程序关于某个数据集合的一次运行活动。说白了就是计算机中运行的程序就是进程,比如QQ、各种浏览器、各种播放器,每一种都是一个进程。 线程:包含在进程之中,是进程中的实际运作单位。进程通过调用线程,完成不同的功能。 一个对象是否是线程安全的,取决于它是否被多个线程同时访问。其实,与其说线程安全,倒不如说资源安全更为...原创 2019-08-05 22:54:58 · 99 阅读 · 0 评论