-
Java Concurrency-06-深入浅出 CAS 算法
为什么学习 CAS?
java 5 中最好的增加之一是在类中支持的原子操作,比如 AtomicInteger、AtomicLong 等等,这些类内部依赖于一个名为CAS的算法(比较和交换)。
CAS 与 java 关键字 volatile 结合,是实现乐观锁的常见方式。
在本文中,我们将一起深入浅出地学习 CAS 算法。
CAS 思想
CAS的思想很简单:三个参数,一个当前内存...
2018-07-24 08:11:28 |
Java
-
Java Concurrency-05-lock intro
序言
Java提供了种类丰富的锁,每种锁因其特性的不同,在适当的场景下能够展现出非常高的效率。
本文旨在对锁相关源码(本文中的源码来自JDK 8)、使用场景进行举例,为读者介绍主流锁的知识点,以及不同的锁的适用场景。
Java中往往是按照是否含有某一特性来定义锁,我们通过特性将锁进行分组归类,再使用对比的方式进行介绍,帮助大家更快捷的理解相关知识。
下面给出本文内容的总体分类目录:
...
2018-07-24 08:11:28 |
Java
-
Java Concurrency-04-Concurrency vs Parallelism
Concurrency vs Parallelism
并发性意味着在没有特定顺序的情况下,在重叠的时间段内开始、运行和完成多个任务。
并行性指的是多个任务或某一特定任务的多个部分同时运行,例如在多核处理器上。
记住,并发和并行不是一回事。
Concurrency
当我们讨论至少两个或多个任务时,并发性基本上是适用的。
当一个应用程序可以同时执行两个任务时,我们称之为并发应用程序。...
2018-07-24 08:11:28 |
Java
-
Java Concurrency-03-thread safety
java 线程安全
线程安全
定义线程安全性非常棘手。一个快速的谷歌搜索出现了许多这样的“定义”:
线程安全的代码是可以工作的代码,即使许多线程同时执行它。
如果一段代码只以保证多个线程同时安全执行的方式操作共享数据结构,那么它就是线程安全的。
难道你不认为上面的定义实际上没有传达任何有意义的东西,甚至增加了一些混乱。
虽然这些定义不能像那...
2018-07-24 08:11:28 |
Java
-
Java Concurrency-02-thread topic
JDK 版本特性更迭
JDK 1.X
功能类
java.lang.Thread
java.lang.ThreadGroup
java.lang.Runnable
java.lang.Process
java.lang.ThreadDeath
异常类
java.lang.IllegalMonitorStateException
java.lang.IllegalSt...
2018-07-24 07:52:20 |
Java
-
Java Concurrency-01-thread
Thread
进程和线程的区别?
进程和线程的主要差别在于它们是不同的操作系统资源管理方式。
进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其它进程产生影响,而线程只是一个进程中的不同执行路径。
线程有自己的堆栈和局部变量,但线程之间没有单独的地址空间,一个线程死掉就等于整个进程死掉,所以多进程的程序要比多线程的程序健壮,但在进程切换时,耗费资源较大,效率要差一些。
但对...
2018-07-24 07:34:24 |
Java
-
Java Concurrency-00-intro
Java Concurrency
简单地说,并发性是并行运行多个程序或程序的几个部分的能力。
并发性使程序能够利用底层操作系统和机器硬件尚未开发的功能来实现高性能和吞吐量。
例如,现代计算机在一个CPU中有多个CPU或多个内核,程序可以利用所有的内核进行部分处理;因此,与顺序处理相比,提前完成任务的时间要早得多。
java并发的主干是线程。
线程是一个轻量级进程,它有自己的调用堆栈...
2018-07-24 07:34:24 |
Java
-
Aspectj
Aspectj
配置
启用IDEA版本的aspectj插件
Project Setting –> Compiler –> Java Compiler设置编译器为Ajc
Path to Ajc compiler 设定 aspjectjtools.jar 的路径,下载地址:https://mvnrepository.com/...
2018-07-23 08:58:17 |
Java