引起线程并发问题,可以简单的总结为以下三条: 原子性问题 可见性问题 有序性问题(重排序问题) 原子性问题 什么是原子性? 原子性,即一个操作或者多个操作,要么全部执行并且执行过程中不会被任何因素打断,要么全部都不执行。 如常见的银行转账、count++操作等,都必须具备原子性才能保证不出现意外。 ...
分类:
其他好文 时间:
2018-01-22 17:24:41
阅读次数:
162
Volatile定义 为了确保共享变量能被准确和一致的更新,线程应该确保通过排他锁单独获得这个变量。Java语言提供了volatile,在某些情况下比锁更加方便。如果一个字段被声明成volatile,java线程内存模型确保所有线程看到这个变量的值是一致的。 特点 volatile修饰的共享变量,能 ...
分类:
其他好文 时间:
2018-01-21 23:56:47
阅读次数:
217
本文转自:http://www.infoq.com/cn/articles/java-memory-model-4 volatile的特性 当我们声明共享变量为volatile后,对这个变量的读/写将会很特别。理解volatile特性的一个好方法是:把对volatile变量的单个读/写,看成是使用同 ...
分类:
编程语言 时间:
2018-01-21 19:19:19
阅读次数:
229
本文转自:http://www.infoq.com/cn/articles/java-memory-model-6 与前面介绍的锁和volatile相比较,对final域的读和写更像是普通的变量访问。对于final域,编译器和处理器要遵守两个重排序规则: 下面,我们通过一些示例性的代码来分别说明这两 ...
分类:
编程语言 时间:
2018-01-21 19:15:48
阅读次数:
178
一、锁 两种特性:互斥性(mutual exclusion)、可见性(visibility)、原子性(atomic) 互斥性就是一次只有一个线程可以访问该共享数据,可见性就是释放锁之前,对共享数据的修改,随后获取锁的另一个线程是可见的,也就是说一个线程修改了共享变量的值,另一个线程访问该共享变量的时 ...
分类:
编程语言 时间:
2018-01-21 11:08:11
阅读次数:
151
在当前的Java内存模型下,线程可以把变量保存在本地内存(比如机器的寄存器)中,而不是直接在主存中进行读写。这就可能造成一个线程在主存中修改了一个变量的值,而另外一个线程还继续使用它在寄存器中的变量值的拷贝,造成数据的不一致。 在当前的Java内存模型下,线程可以把变量保存在本地内存(比如机器的寄存 ...
分类:
其他好文 时间:
2018-01-20 22:50:30
阅读次数:
185
文章转载自 http://www.cnblogs.com/dolphin0520/p/3920373.html volatile这个关键字可能很多朋友都听说过,或许也都用过。在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果。在Java 5之后,volatile ...
分类:
编程语言 时间:
2018-01-20 21:32:48
阅读次数:
158
下面是一共通过volatile实现原子性的例子: 通过建立100个线程,计算number这个变量最后的结果。 运行结果: 发现有几种结果: 造成这个结果的原因就是,volatile关键字具有可见性,number++实际上有三步操作,但是不具备原子性。 ...
分类:
编程语言 时间:
2018-01-20 17:52:24
阅读次数:
134
1、synchronized 所重入场景: 继承关系的类,子类调用父类的方法 线程安全 带有synchronized关键字的方法互相调用 线程安全 2、volatile 作用:是变量在多个线程中可见,当改变变量值时(注意,改变的是主内存的值),每个线程的工作内存还是原先的值; 强制线程到主内存(共享 ...
分类:
编程语言 时间:
2018-01-20 15:09:43
阅读次数:
179
/var/log/redis_6379.log 日志文件
/var/lib/redis/6379 数据目录
/usr/local/bin/redis-server Redis服务器软件存储路径
vim /etc/redis/6379.conf 配置文件
.....
maxmemory <bytes> 最大内存
maxmemory-policy volatile-lru 内存满时,使用LRU算法清理旧数据
daemonize yes 守护进程
pidfile /var/run/redis_6379.pid 进程PID
port 6379 端口号
timeout 300 连接超时时间
loglevel notice 日志级别
logfile /var/log/redis_6379.log 日志文件
databases 16 数据库个数
save 900 1 数据库镜像频率
dbfilename dump.rdb 镜像备份文件名
/var/l
分类:
数据库 时间:
2018-01-19 00:21:29
阅读次数:
255