总结: 1、保证可见性(JMM) 2、不保证原子性 (核心难点:原子类) 3、禁止指令重排 (核心难点:说出单例模式。说出CAS。说出CPU原语) 1 // 验证volatile 可见性 2 public class JmmDemo { 3 private volatile static int n ...
分类:
其他好文 时间:
2020-03-09 18:14:01
阅读次数:
65
volatile关键字可以说是Java虚拟机提供的最轻量级的同步机制,但是它并不容易完全被正确、完整地理解,以至于许多程序员都习惯不去使用它,遇到需要处理多线程数据竞争问题的时候一律使用synchronized来进行同步。了解volatile变量的语义对了解多线程操作的其他特性很有意义,在本文中我们 ...
分类:
编程语言 时间:
2020-03-09 13:23:19
阅读次数:
73
1.正常的程序启动,停止 2.使用退出标记,一般程序在run()方法后,线程会正常结束。但是有一些伺服线程还在运行,他们运行时间较长,只有当外部条件满足时,他们才会停止。实现如下: public class ThreadCease extends Thread{ private volatile b ...
分类:
编程语言 时间:
2020-03-09 13:12:46
阅读次数:
483
单例设计模式介绍 所谓类的单例设计模式,就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法(静态方法)。 比如Hibernate的SessionFactory,它充当数据存储源的代理,并负责创建Session对象。SessionFactor ...
分类:
编程语言 时间:
2020-03-07 13:17:31
阅读次数:
76
Volatile 关键字 Volatile 是java虚拟机提供的轻量级同步机制(保证可见性,不保证原子性,禁止指令重排) 可见性之前需要了解 JVM(java虚拟机) JMM(java内存模型) javamemory model 不真实存在描述的一种规则规范 定义了程序中各个变量(包括实例字段静态 ...
分类:
编程语言 时间:
2020-03-06 19:28:39
阅读次数:
82
转自 https://www.cnblogs.com/hustzzl/p/9343797.html 1. Java锁的种类 在笔者面试过程时,经常会被问到各种各样的锁,如乐观锁、读写锁等等,非常繁多,在此做一个总结。介绍的内容如下: 乐观锁/悲观锁 独享锁/共享锁 互斥锁/读写锁 可重入锁 公平锁/ ...
分类:
编程语言 时间:
2020-03-06 12:52:14
阅读次数:
76
一、声明的位置 局部变量:方法体{}中,形参,代码块{}中 成员变量:类中方法外 类变量:有static修饰 实例变量:没有static修饰 二、修饰符 局部变量:final 成员变量:public、protected、private、final、static、volatile、transient ...
分类:
其他好文 时间:
2020-03-06 10:28:59
阅读次数:
62
目录 1 保证内存可见性 2 禁止指令重排序 3 不保证原子性 1 保证内存可见性说到内存可见性就必须要提到Java的内存模型,如下图所示: 如上图所示,所有线程的共享变量都存储在主内存中,每一个线程都有一个独有的工作内存,每个线程不直接操作在主内存中的变量,而是将主内存上变量的副本放进自己的工作内 ...
分类:
其他好文 时间:
2020-03-05 13:25:10
阅读次数:
53
锁 | 原理 | 使用场景 | | final | | volatile | | ThreadLocal | | synchronized | | Atomic | | | | | | | | ...
分类:
其他好文 时间:
2020-03-04 11:19:06
阅读次数:
54
synchronized与volatile关键字 一、 synchronized synchronized是Java语法中的一个内置锁的实现。synchronized关键字解决了代码块或者方法上的同步问题,同一时间,只有一个线程能够通过并执行。提供了并发场景的一个共享资源访问的解决方案。 当我们说s ...
分类:
编程语言 时间:
2020-03-03 20:34:49
阅读次数:
95