本项目是记录自己在学习研究Java安全过程中遇到的优秀资源,包括Java安全的多个细分领域,如Java漏洞分析和Java代码审计以及Java开发的应用程序组件协议甚至Java本身的安全问题等。一个不能攻击Java的黑客不是一个好黑客,一个不懂Java安全的师傅不是一个好师傅!
在Java并发编程中,内存可见性和原子性是两个至关重要的概念。内存可见性是指一个线程对共享变量的修改能够立即被其他线程所感知;而原子性则是指一个操作或多个操作在并发执行的过程中是不可中断的。为了确保内存可见性和原子性,Java提供了多种同步 ...
Java中的CAS原理及其在并发编程中的应用是一项非常重要的技术。CAS利用CPU硬件提供的原子指令,实现了在无锁环境下的高效并发控制,避免了传统锁机制带来的上下文切换和线程阻塞开销。 引言 传统的并发控制手段,如使用synchronized关键字或者ReentrantLock等互斥 ...
AtomicIntegerFieldUpdater更加灵活,可以用于对任意类的字段进行原子操作,但是需要满足一定的条件。而AtomicInteger则更加简单直接,适用于对整型变量进行原子操作的场景。 AtomicInteger是Java并发包中的一个原子类型,用于实现原子操作。原子操作是不可分割的操作 ...
在上一篇文章中,我们知道了什么是CAS以及CAS的执行流程,在本篇文章中,我们将跟着源码一步一步的查看CAS最底层实现原理。 本篇是《凯哥(凯哥Java:kagejava)并发编程学习》系列之《CAS系列》教程的第二篇:从源码追根溯源查看CAS最底层是怎么实现的。 本文 ...
假设现在有两个线程,分别是T1 和 T2,然后T1执行某个操作的时间为10秒,T2执行某个时间的操作是2秒,最开始AB两个线程,分别从主内存中获取A值,但是因为B的执行速度更快,他先把A的值改成B,然后在修改成A,然后执行完毕,T1线程在10秒后,执行完毕,判断 ...
几天前,我偶然地将之前写的用来测试AtomicInteger和synchronized的自增性能的代码跑了一下,意外地发现AtomicInteger的性能比synchronized更好了,经过一番原因查找,有了如下发现: 可以看出,在jdk1.8中,直接使用了Unsafe的getAndAddInt方法,而在jdk1.7的Unsafe中,没有此方法 ...