2019年05月的内容

java

java语言中的锁

java语言中的锁
从java的集合线程安全开始说起 平时经常使用的集合类如ArrayList,LinkedList,HashSet等以及Map都是线程不安全的,如果进行多线程操作会出现线程安全问题,那么java是如何解决这些常用类的线程安全问题呢 几个常用的保证集合类线程安全的方法 使用synchronized关键字 使用Collections提供的工具方法保证线程……继续阅读 »

cruise 2年前 (2019-05-27) 674浏览 0评论 0个赞

java

CAS问题简述

CAS问题简述
什么是CAS compareAndSwap 对比并交换,是一条CPU原语,执行必须是连续的不能够被打断。Atomic类使用CAS原理实现 java语言中利用,sun.misc.Unsafe类实现了CAS java8中里有do…while循环实现了CAS public final int getAndSetInt(Object paramOb……继续阅读 »

cruise 2年前 (2019-05-20) 639浏览 0评论 0个赞

java

线程池相关知识点

线程池相关知识点
从阻塞队列开始说起 在操作阻塞队列时,如果队列内容为空,那么消费线程会被阻塞;如果队列已经满了,那么生产线程将会阻塞 阻塞队列的分类 ArrayBlockingQueue 有界队列 底层为Array形式存储 如果所有的任务都是按顺序执行,不存在“插队”和从队伍中离开,则适合使用ArrayBlockingQueue LinkedBlockingQu……继续阅读 »

cruise 2年前 (2019-05-18) 721浏览 0评论 1个赞

java

volatile是如何保证内存可见性的

volatile是如何保证内存可见性的
在java的内存模型中,每个线程都要将主内存中的变量复制到线程的工作内存中,在线程操作完成后将工作内存中的变量写会到主内存中。如果一个变脸被复制到线程的工作空间中,在线程工作空间中的修改,如果不能及时写回主内存中,那么其他线程是无法获取大这个变量已被修改的状态。 java引入volatile关键字来实现指令在读取变量时,必须去读主内存中的变量,而不将变量复制……继续阅读 »

cruise 2年前 (2019-05-02) 595浏览 0评论 0个赞

设计模式

指令重排造成双重检验方式的单例模型线程不安全问题

指令重排造成双重检验方式的单例模型线程不安全问题
要不断打磨,技术才会不断进步 之前写过单例模式的几种实现方式,原文链接http://www.full-stacker.com/archives/256 之前犯了个严重的错误,一直以为双重判断方式的实现是线程安全的,但真实却不是这样的。。。。 先看下双重判断方式的实现代码: package com.fullstacker.study.designpattern……继续阅读 »

cruise 2年前 (2019-05-02) 595浏览 0评论 0个赞