标签:原子类

Java

[Java并发-26] 软件事务内存:借鉴数据库的并发经验

yanxinchi 发布于 2019-07-19

实际上我们天天都在写并发程序,只不过并发相关的问题都被类似 Tomcat 这样的 Web 服务器以及 MySQL 这样的数据库解决了。尤其是数据库,在解决并发问题方面,可谓博大精深,它的 事务机制非常简单易用 ,能甩 Java 里面的锁、原子类十条街。很显然对于我们要借鉴一下。 ...

阅读(7)评论(0)赞 (0)

Java

图解 Java 线程安全

5

邓龙华 发布于 2019-07-16

按操作系统中的描述,线程是 CPU 调度的最小单元,直观来说线程就是代码按顺序执行下来,执行完毕就结束的一条线。 举个 :chestnut:,富土康的一个组装车间相当于 CPU ,而线程就是当前车间里的一条条作业流水线。为了提高产能和效率,车间里一般都会有多条流水线同时作业。同样...

阅读(13)评论(0)赞 (0)

Java

Week 1 – Java 多线程 – CAS

3

likai 发布于 2019-07-07

前言 学习情况记录 时间:week 1 SMART子目标 :Java 多线程 记录在学习线程安全知识点中,关于 CAS 的有关知识点。 线程安全是指:多个线程不管以何种方式访问某个类,并且在主调代码中不需要进行同步,都能表现正确的行为。 常见的线程安全实现方法分为不可变对象、线程...

阅读(53)评论(0)赞 (0)

Java

网易Java研发面试官眼中的Java并发——安全性、活跃性、性能

hanze 发布于 2019-07-05

一. 安全性问题 线程安全的本质是 正确性 ,而正确性的含义是 程序按照预期执行 理论上 线程安全 的程序,应该要避免出现 可见性问题(CPU缓存)、原子性问题(线程切换)和有序性问题(编译优化) 需要分析是否存在线程安全问题的场景: 存在共享数据且数据会发生变化,即有多个线程会...

阅读(50)评论(0)赞 (0)

Java

[Java并发-17-并发设计模式] Immutability模式:如何利用不变性解决并发问题?

changyuan.xu 发布于 2019-07-04

解决并发问题,其实最简单的办法就是让共享变量只有读操作,而没有写操作。这个办法如此重要,以至于被上升到了一种解决并发问题的设计模式: 不变性(Immutability)模式 。所谓 不变性,简单来讲,就是对象一旦被创建之后,状态就不再发生变化 。换句话说,就是变量一旦被赋值,就不...

阅读(30)评论(0)赞 (0)

Java

详解 CAS 及其引发的三个问题

3

likai 发布于 2019-07-01

本文主要简介一下CAS原理及其引发的三个问题: 1.ABA问题; 2.自旋锁开销及jdk8解决方案; 3.单对象操作及解决。 1. CAS简介 在多线程编程的时候,为了保证多个线程对一个对象可以安全进行访问时,我们需要加同步锁synchronized,保证对象的在使用时的正确性,...

阅读(45)评论(0)赞 (0)

Java

解码器 与 编码器

2

xiaoli.wang 发布于 2019-06-30

解码器 ByteToMessageDecoder 抽象类 将字节解码为消息(或者另一个字节序列), Netty 为它提供了一个抽象的基类: ByteToMessageDecoder . 由于你不可能知道远程节点是否会一次性地发送一个完整的消息, 所以这个类会对入站数据进行缓冲, ...

阅读(35)评论(0)赞 (0)

Java

Java并发 — CSP模型

wenming.gapo 发布于 2019-06-26

Go是一门号称从 语言层面支持并发 的编程语言,支持并发也是Go非常重要的特性之一 Go支持 协程 ,协程可以类比Java中的线程,解决并发问题的难点在于线程(协程)之间的 协作 Go提供了两种方案 支持协程之间以 共享内存 的方式通信,Go提供了 管程 和 原子类 来对协程进行...

阅读(32)评论(0)赞 (0)

Java

Java之CAS无锁算法

Harries 发布于 2019-06-25

 如果一个线程失败或挂起不会导致其他线程也失败或挂起,那么这种算法就被称为 非阻塞算法 。而CAS就是一种非阻塞算法实现,也是一种乐观锁技术。它能在不使用锁的情况下实现多线程之间的变量同步,所以CAS也是一种无锁算法。 1、CAS的实现  CAS包含了3个操作数——需要读写的内存...

阅读(42)评论(0)赞 (0)

Java

Android复习资料——Java知识点汇总(一)

7

刘莉莉 发布于 2019-06-23

接触 Android 开发也有一段时间了,前段时间便开始想抽空整理一些知识点,通过笔记整理的方式减少自己重复学习的时间成本和提高自身的效率。 目前先是总结了部分 Java 的知识点,这就是本文的主要分享内容。 想特意申明的一点是,这个总结更多的是从本人自己的编程基础和侧重点出发,...

阅读(55)评论(0)赞 (0)

Java

Java多线程 – 锁机制

puefu.he 发布于 2019-06-16

我们通过一个例子了解锁的不同实现,开启100个线程对同一 int 变量进行 ++ 操作1000次,在这个过程中如何对这个变量进行同步 未同步代码: import java.util.concurrent.locks.Lock; import java.util.concurren...

阅读(48)评论(0)赞 (0)

Java

[Java并发-12] 原子类:无锁工具类的典范

1

xiaoli.he 发布于 2019-06-16

前面我们多次提到一个累加器的例子,示例代码如下。在这个例子中,add10K() 这个方法不是线程安全的,问题就出在变量 count 的可见性和 count+=1 的原子性上。可见性问题可以用 volatile 来解决,而原子性问题我们前面一直都是采用的互斥锁方案。 public ...

阅读(47)评论(0)赞 (0)

Java

【并发编程】一文带你读懂深入理解Java内存模型(面试必备)

5

xirruiqiang 发布于 2019-06-14

并发编程这一块内容,是高级资深工程师必备知识点,25K起如果不懂并发编程,那基本到顶。但是并发编程内容庞杂,如何系统学习?本专题将会系统讲解并发编程的所有知识点,包括但不限于: 线程通信机制,深入JMM内存模型原理,深入synchronized原理,深入volatile原理,DC...

阅读(54)评论(0)赞 (0)

Java

CAS 是什么

yanxinchi 发布于 2019-06-10

CAS (Compare And Swap) 比较并交换 CAS 是一条CPU并发原语。功能是判断内存某个位置的值是否为预期值,如果是则更改为最新值,这个过程是原子的。CAS并发原语体现在Java语言中就是sun.misc.Unsafe类中的各个本地方法。这是一种完全依赖于 硬件...

阅读(47)评论(0)赞 (0)

Java

JAVA并发之多线程基础(6)

1

xiaoli.he 发布于 2019-06-10

在并发相关,不仅仅依靠之前介绍的各种锁或者队列操作,同时我们也需要考虑到资源的消耗情况(力扣上各种题目比消耗与时间。。)。这个时候我们就引入了线程池。 针对于大家熟悉的 Executors 进行入手,我们经常性的使用里面的线程池。当然,根据阿里巴巴的规范手册上来说,不建议我们直接...

阅读(49)评论(0)赞 (0)

Java

对volatile的理解

2

小丁 发布于 2019-06-06

JMM(java内存模型 Java Memory Model)本身是一种抽象的概念,描述一组规则后规范通过这组规范定义了程序中各个变量(包括实例字段,静态变量和组成数组对象的元素)的访问方式。 JMM关于同步的规定: 线程解锁前,必须把共享变量的值刷新回主内存 线程加锁前,必须读...

阅读(53)评论(0)赞 (0)

Java

Java锁详解:“独享锁/共享锁+公平锁/非公平锁+乐观锁/悲观锁+线程锁”

4

xiaoli.wang 发布于 2019-06-04

在Java并发场景中,会涉及到各种各样的锁如公平锁,乐观锁,悲观锁等等,这篇文章介绍各种锁的分类: 公平锁/非公平锁 可重入锁 独享锁/共享锁 乐观锁/悲观锁 分段锁 自旋锁 线程锁 乐观锁 VS 悲观锁 乐观锁与悲观锁是一种广义上的概念,体现了看待线程同步的不同角度,在Java...

阅读(46)评论(0)赞 (0)

Java

java 锁机制

hellas 发布于 2019-06-01

重入锁 锁作为并发共享数据,保证一致性的工具,在JAVA平台有多种实现(如 synchronized(重量级) 和 ReentrantLock(轻量级)等等 ) 。这些已经写好提供的锁为我们开发提供了便利。 重入锁,也叫做递归锁,指的是同一线程 外层函数获得锁之后 ,内层递归函数...

阅读(53)评论(0)赞 (0)