摘要:
一 简介线程这个话题,不管是在面试中还是在工作中会经常的遇见。而并发编程的目的就是为了在尽量不影响程序的执行效率的情况下保证数据的安全性和正确性。要想理解线程首先要明白一些概念性的东西。 进程:具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位. 线程 阅读全文
摘要:
一 简介 保证Java中的原子操做方式有两种方式 1 加锁(可以理解悲观锁机制) 2 CAS(可以理解为乐观锁机制) CAS全称是Compare and Swap 即比较并替换。在JDK中许多地方都可以看到它的身影,比如AQS同步组件,Atomic原子类操作等等都是以CAS实现的。其中java.ut 阅读全文
摘要:
一 简介 volatile关键字是轻量级的synchronized,volatile在并发编程中保证共享变量的可见性,当一个线程修改被volatile修饰的共享变量时,另外一个线程就能读到这个修改的值。volatile可以保证共享变量的可见性但不能保证复合操做的原子性:比如像i++这样的操做是vol 阅读全文
摘要:
一 简介 在并发编程中,两个线程(A、B)同时操作一个普通变量的时候会出现线程A在操作变量时线程B也将变量操作了,此时线程A是无法感知变量发生变化的,造成变量改变错误。更据以上例子我们需要解决的问题就是线程之间的通信以及同步。表在命令式编程中,线程之间的通信机制有两种:共享内存和消息传递。Java并 阅读全文
摘要:
一 简介 说到并发不得不提的synchronized,synchronized关键字是元老级别的角色。在Java SE 1.6之前synchronized被称为是重量,在1.6之后对同步进行了一系列的优化,使它的“重量”发生变化。这篇文章主要介绍同步的原理和它“重量”变化 二 表现形式 同步代码在表 阅读全文