java基础
LuxBai
这个作者很懒,什么都没留下…
展开
-
JUC并发编程基石AQS之中断
前几篇介绍AQS源码都是基于正常流程来分析,把主要流程走了一遍,但是在看源码时发现好多逻辑都没走到,其中最重要的当属线程的中断以及节点在什么情况下会取消排队,这篇文章我们还是拿具体例子来分析一下。中断首先简单说一下线程的中断。**java线程中,中断只是一个状态,中断线程只是设置了中断状态,并不是立刻将线程中断停止。**响应中断是取决于你自己代码逻辑中是否会判断中断状态,如果你不判断中断状态,那么设置了中断其实也没有影响,只是告诉你线程被中断过,让开发者可以自主选择处理中断的逻辑。下面简单介绍下几个重要原创 2020-06-27 14:51:13 · 1055 阅读 · 2 评论 -
JUC并发编程基石AQS之Condition解析
从上一篇文章我们知道了,Lock接口代替了synchronize用于并发编程的加锁解锁,那么Object monitor的wait、notify功能谁能代替呢,就是我们这篇文章介绍的Condition。Object的wait、notify是用来做资源状态判断的,比如生产者-消费者模式,消费者获取到了锁,还需要有资源可以消费才能继续执行。当资源不足时,当前线程可以休眠,不用浪费cpu,当生产者生产后,再通知等待资源的消费者去消费。代码结构顶级接口public interface Condition {原创 2020-06-20 17:54:17 · 211 阅读 · 0 评论 -
JUC并发编程基石AQS之主流程源码解析
前言由于AQS的源码太过凝练,而且有很多分支比如取消排队、等待条件等,如果把所有的分支在一篇文章的写完可能会看懵,所以这篇文章主要是从正常流程先走一遍,重点不在取消排队等分支,之后会专门写一篇取消排队和等待条件的分支逻辑。读源码千万别在每个代码分支中来回游走,先按一个正常的分支把流程看明白,之后再去重点关注其他分支,各个击破。我相信看完正常流程,你再去分析其他分支会更加得心应手。执行流程AQ...原创 2020-04-25 21:00:41 · 267 阅读 · 0 评论 -
JUC并发编程基石AQS源码之结构篇-ReentrantLock
JUC并发编程基石AQS源码之结构篇-ReentrantLock上篇文章JUC并发编程基石AQS源码之结构篇我们整体了解了JUC下加锁类的代码结构,这篇我们来看下ReentrantLock的代码结构,之后讲解AQS源码也主要以这个类为主。实现Lock接口首先是实现了Lock接口,实现了加锁方法lock(),这里没有调用AQS的acquire方法,往下看public class Reentr...原创 2020-04-19 14:30:32 · 263 阅读 · 0 评论 -
JUC并发编程基石AQS源码之结构篇
JUC并发编程基石AQS源码之结构篇前言AQS(AbstractQueuedSynchronizer)算是JUC包中最重要的一个类了,如果你想了解JUC提供的并发编程工具类的代码逻辑,这个类绝对是你绕不过的。我相信如果你是第一次看AQS源码肯定是一脸懵逼,一个个方法跳来跳去一会就绕蒙了。所以把整个代码骨架搞明白是你看懂AQS源码的第一步。本篇文章只说代码结构,之后的篇章会讲解AQS具体的执行逻...原创 2020-04-19 13:57:33 · 312 阅读 · 0 评论 -
Thread基础知识
Thread基础知识java程序中只有一种途径去启动一个线程,即调用Thread类的start()方法。java中的线程状态在Thread类中有一个内部的枚举类State描述了线程的各个状态。public enum State { /** * 线程创建但未启动时会处于此状态 */ NEW, /** ...原创 2020-04-05 20:20:32 · 228 阅读 · 0 评论