加入收藏 | 设为首页 | 会员中心 | 我要投稿 惠州站长网 (https://www.0752zz.com.cn/)- 办公协同、云通信、物联设备、操作系统、高性能计算!
当前位置: 首页 > 业界 > 正文

2021 是时候给自己加薪了!

发布时间:2021-01-30 13:22:03 所属栏目:业界 来源:互联网
导读:一、定义:什么是线程安全性 当多个线程访问某个类时,不管运行时环境采用 何种调度方式 或者这些进程将如何交替执行,并且在主调代码中不需要任何额外的同步或协同,这个类都能表现出正确的行为,那么就称这个类就是线程安全的。 二、线程安全性的三个体现

一、定义:什么是线程安全性

当多个线程访问某个类时,不管运行时环境采用 何种调度方式 或者这些进程将如何交替执行,并且在主调代码中不需要任何额外的同步或协同,这个类都能表现出正确的行为,那么就称这个类就是线程安全的。

二、线程安全性的三个体现

原子性:提供互斥访问,同一时刻只能有一个线程对数据进行操作(Atomic、CAS算法、synchronized、Lock)

可见性:一个主内存的线程如果进行了修改,可以及时被其他线程观察到(synchronized、volatile)

有序性:如果两个线程不能从 happens-before原则 观察出来,那么就不能观察他们的有序性,虚拟机可以随意的对他们进行重排序,导致其观察观察结果杂乱无序(happens-before原则)

三、线程安全性:原子性

3.1、原子性 — Atomic包

在Java jdk中里面提供了很多Atomic类

  • AtomicXXX:CAS、Unsafe.compareAndSwapInt
  • AtomicLong、LongAdder
  • AtomicReference、AtomicReferenceFieldUpdater
  • AtomicStampReference:CAS的ABA问题

由于CAS原语的直接操作与计算机底层的联系很大,CAS原语有三个参数, 内存地址、 期望值、 新值。我们在Java中一般不去直接写CAS相关的代码,JDK为我们封装在AtomicXXX中,因此,我们直接使用就可以了。

我们在 java.util.concurrent.atomic目录中可以看到我们这些类,包下提供了 AtomicBoolean、 AtomicLong、 AtomicInteger三种原子更新基本类型和一个比较好玩的类 AtomicReference,这些类都有一个共同点,都支持CAS,以 AtomicInteger为重点讲解。
 

可以看到,javac编译概要图主要分为如下几步:

  1. 把源文件解析为抽象语法树。
  2. 调用已注册的注解处理器。
  3. 如果注解处理器处理过程中生成了新的源文件,编译器重复第 1、2 步,当注解处理器不再生成新的源文件则进入最后一轮。
  4. 进入真正的 compile 字节码环节生成字节码。

如上就是注解处理器的核心机制,有了这个核心机制的认识我们就继续往下探索。

构建工具下 Annotation Processor 的本质

我们日常开发中(无论是 Java 后端还是 Android 移动端)总是多多少少会用到 JDK 提供的annotation processor能力,无论是什么构建工具(Gradle 或者 Maven 等)本质都是通过javac -processorpath命令参数显式指定哪些 Processer,或者显式声明META-INF/services/javax.annotation.processing.Processor来被javac发现并调用的(参见 google 的 AutoService 框架)。

正常情况下我们开发中使用及构建 Annotation Processor 技术都是上面几步走的方案,而且大多数照着网络上抄的都能正常工作,每次只用自己处理 process 就挺香的,因为只要按照规则声明放置,其他的 javac都能自己完美调用。

增强 javac 过程打印暴露问题

要解决一开始说的 Annotation Processor 中自己加的日志都不打印场景问题,我们需要获取一些额外的信息辅助定位。由于直接使用命令行javac的方式是最原始的操作,我们构建一般采用 Gradle,而 Gradle 的本质还是调用javac,所以下面我们以 Gradle 为例来分析如何定位 Annotation Processor 问题。

下面简单粗暴点就是直接在根目录的build.gradle中给所有模块添加参数:

(编辑:惠州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

推荐文章
    热点阅读