首页
首页
BOT
沸点
课程
直播
活动
AI刷题
NEW
商城
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
Java并发及高并发
Chengyunlai
创建于2023-01-24
订阅专栏
这一次一定要通透Java的并发编程
等 4 人订阅
共17篇文章
创建于2023-01-24
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
共享模型 - 无锁并发,CAS的概念
CAS 和 volatile 可以实现无锁并发,适用于线程数少,多核CPU的场景。CAS减少了上下文的切换,实现效率的提高。基于CAS的工具类:原子类
volatile 线程的有序性
volatile还可以实现线程指令的有序性,本文通过volatile的例子了解紧急指令的有序性问题,并剖析源码,了解为什么。
volatile线程的可见性;两阶段终止模式优化;Balking犹豫模式
volatile不能保证原子性,只能保证可见性;synchronized能保证可见和原子性但效率低。volatile适合的场景:仅一个线程写,其他线程读。可以有两阶段终止模式和犹豫模式。
Java并发的一些前置知识
了解为什么要学Java的并发,并发的本质其实就是开启一个线程去做新的事情,由此展开一些基本前置知识,例如进程与线程,同步异步,并发并行...
Runnable任务,用Thread或线程池启动它
该文介绍了Java并发的基本使用:从定义并发的任务开始介绍,到使用Thread构造器创建线程执行任务。最后介绍了Executor线程池的内容。
Callable带有返回值的任务,打断线程执行的随机性
定义任务的第二种方式`Callable`,它和`Runnable`的区别是,它可以在任务完成时返回一个值。了解影响任务执行的行为:休眠、让步、优先级
线程的生命周期
线程的状态是由操作系统层面去描述的,主要分为:初始化、可运行、运行、终止以及阻塞状态。而在Java层面根据其语法,将线程的生命周期状态分为了6种,更细致了一点。
后台线程及线程工厂的方式设置一组后台线程
了解后台线程,什么是后台线程和非后台线程,如何去设置后台线程;了解线程工厂,做一些通用线程的配置工作,如何配置线程工厂。
等待另外的线程以及捕获异常的方式
通过继承Thread类,实现线程与任务的相结合;学习使用线程对象的`join()`的用法;打断一个线程,用`interrupt`去设置一个标志,并非直接关闭线程;如何捕获在线程中抛出的异常。
因为并行的并发任务导致资源竞争:synchronized及Lock
模拟使用线程共享资源时出现的问题;该问题是线程共享资源竞争发生的问题,对于该问题需要用锁的方式解决。一种是synchronized,另外一种是lock
Synchronized加锁的原理Monitor监视器
Synchronized加锁的原理Monitor监视器。原来在JVM中每个对象都是有一个Monitor,所以在加锁时要指向同一个对象。
Synchronized 进阶学习 - 自主优化
Java锁的进阶学习,锁在JVM中有多种优化方式:轻量级锁、偏向锁、自旋、锁消除等...锁的改变也有多种方式,例如锁膨胀、锁撤销、批量重偏向和批量撤销。
Wait / Notify的原理以及使用
通过wait和notify也会改变线程的执行顺序,通过是在A线程执行过程中需要等待其它线程完成相应工作时,可以使用wait和notify的方式,注意wait会释放锁,而notify会造成虚假唤醒的情况
interrupt让线程停止,应用:两阶段终止模式
线程会通过:sleep、wait、join、park进入阻塞状态。而interrupt可以打断阻塞状态,同时也可以使用interrupt打断正常执行的线程,只是需要判断打断标志再做逻辑处理。
死锁/活锁/饥饿/ReentrantLock锁
在有些场景中,我们需要写一下双重锁的操作,而多锁竞争的情况会容易出现死锁/活锁/饥饿等情况,针对这些情况synchronized在解决上就有些乏力了,可以使用ReentrantLock。
volatile关键字的作用以及原子类
本文主要介绍了Java并发编程中volatile关键字的作用及使用方法,以及Java提供的原子类的基本概念和常用方法。
Java并发基础阅读知识:常用原子类的构造方法,以及基本方法使用
本篇文章介绍了Java并发编程中常用的原子类及其构造方法和基本方法使用。内容仅作学习和参考,不参加任何活动。