首页
全部分类
文章归档
关于我
1
用户体验---5W1H模型
2
用户体验---心流体验模型
3
用户体验---用户体验五要素
4
[转]为什么看起来没人情味美团外卖赢了?
5
重构---重构的手法
敢敢雷
永言配命,自求多福
累计撰写
57
篇文章
累计创建
0
个标签
累计收到
2
条评论
栏目
首页
全部分类
文章归档
关于我
搜索
目 录
CONTENT
以下是
并发编程基础
相关的文章
JAVA并发编程的艺术(10)并发编程基础
这是《JAVA并发编程的艺术》(方腾飞)第四章的内容,这里主要做下总结。线程简介什么是线程每启动一个Java程序,操作系统就会创建一个Java进程。现代操作系统调度的最小单元是线程,也叫轻量级进程,在一个进程里可以创建多个线程,这个线程都拥有各自的计数器、堆栈和局部变量等属性,并且能够访问共享的内存
2019-12-06
1462
0
0
Java基础
并发编程基础
JAVA并发编程的艺术(9)深入分析DCL
DCL,即Double Check Lock,双重检查锁定。DCL很多人在单例模式中用过,博主之前面试的时候,就遇到过手写一个单例,然后饿汉和懒汉都手撕了一遍,但是面试管当时好像不是很满意,于是机智的博主赶紧指出了懒汉的线程安全问题,加上双重校验锁。现在就分析下为什么要加上DCL。懒汉单例先看代码p
2019-12-05
1217
0
0
Java基础
并发编程基础
JAVA并发编程的艺术(8)final域
final域的读和写像是普通的变量访问。final域的重排序规则对于final域,编译器和处理器要遵守两个重排序规则。在构造函数内对一个final域的写入,与随后把这个被构造对象的引用赋值给一个引用变量,这两个操作之间不能重排序。初次读一个包含final域的对象的引用,与随后初次读这个final域,
2019-12-04
972
0
0
Java基础
并发编程基础
JAVA并发编程的艺术(7)根据JMM分析volatile
当声明变量为volatile后,对这个变量的读/写将会很特别。volatile是轻量级的synchronized。如果一个变量使用volatile,则它比使用synchronized的成本更加低,因为它不会引起线程上下文的切换和调度。Java内存模型在并发编程中我们一般都会遇到这三个基本概念:原子性
2019-12-04
1201
0
0
Java基础
并发编程基础
JAVA并发编程的艺术(6)重排序
重排序是值编译器和处理器为了优化程序性能而对指令序列进行重新排序的一种手段。但是不能随意重排序,不是你想怎么排序就怎么排序,它需要满足以下两个条件:在单线程环境下不能改变程序运行的结果;存在数据依赖关系的不允许重排序其实这两点可以归结于一点:无法通过happens-before原则推导出来的,JMM
2019-12-04
772
0
0
Java基础
并发编程基础
JAVA并发编程的艺术(5)happens-before
从JDK5开始,JMM就使用happens-before的概念来阐述多线程之间的内存可见性,在JMM中,如果一个操作执行的结果需要对另一个操作可见,那么这两个操作之间必须要存在happens-before关系。这里提到的两个操作既可以是在同一个线程内,也可以是在不同的线程之间。happens-bef
2019-12-03
1006
0
0
Java基础
并发编程基础
JAVA并发编程的艺术(4)原子操作的实现原理
原子本意是“不能被进一步分割的最小粒子”,而原子操作意为“不可被中断的一个或一系列操作”。处理器实现原子操作处理器提供总线锁定和缓存锁定两个机制来保证复杂内存操作的原子性。使用总线保证原子性如果多个处理器同时对共享变量进行读改写操作,那么共享就会被多个处理器同时进行操作,这样读改写操作就不是原子的,
2019-12-03
1123
0
0
Java基础
并发编程基础
JAVA并发编程的艺术(3)锁的状态
为了减少获得锁和释放锁带来的性能消耗,引入了“偏向锁”和“轻量级锁”。所以锁一共有4种状态,级别从低到高依次是:无锁状态,偏向锁状态,轻量级锁状态和重量级锁状态,这几个状态会随着竞争情况逐渐升级。锁可以升级但不能降级,意味着偏向锁升级成轻量级锁后不能降级成偏向锁。偏向锁“偏向”的意思是,偏向锁假定将
2019-12-01
559
0
0
Java基础
并发编程基础
JAVA并发编程的艺术(2)synchronized和volatile底层实现原理
在最初学习多线程的时候,只要遇到同步问题我就会使用synchronized关键字,在解决问题时感觉非常好用。后来到了web阶段,当用户访问过多的时候,也会出现多线程问题,这个时候加上一个synchronized,简直酸爽,再后来不断学习的过程中,慢慢也了解到synchronized是一个重量级锁,但
2019-11-30
1130
0
0
Java基础
并发编程基础
JAVA并发编程的艺术(1)并发编程的挑战
记得刚开始学JAVA的时候,在并发这一块最薄弱,只能做一些简单的多线程使用和对锁的使用,在其底层压根就没考虑过,最近抽空买了本JAVA并发编程艺术,要仔细认真的学习下。上下文切换一次上下文切换就是任务从保存到再加载的过程,因为处理器支持多线程执行代码的通过给每个线程分配CPU时间片来实现的,因为时间
2019-11-29
684
0
0
Java基础
并发编程基础