- 博客(9)
- 收藏
- 关注
转载 JAVA中的CAS原理
CAS:Compare and Swap, 翻译成比较并交换。 java.util.concurrent包中借助CAS实现了区别于synchronouse同步锁的一种乐观锁。本文先从CAS的应用说起,再深入原理解析。 CAS应用CAS有3个操作数,内存值V,旧的预期值A,要修改的新值B。当且仅当预期值A和内存值V相同时,将内存值V修改为B,否则什
2017-01-25 17:30:06
320
原创 MySQL存储引擎
MyISAM和InnoDB存储引擎。MyISAM只有一种表级锁,因此不需要事务实现。可通过’show status like ‘table%’’ 查看锁对系统的影响。Lock table read local,为表加读锁,这里local表示允许并发插入。默认将SQL中所有涉及的表都加锁。默认锁调度机制是写优先。MyISAM存储结构数据文件、索引文件分开存储。索引指向的是
2017-01-25 17:28:11
428
原创 JVM内存模型
启动一个线程,都会分配一块工作内存,每次线程操作变量,都是从主内存拷贝到工作内存,线程只操作工作内存,然后再jvm会回写到主内存。因此出现多线程访问同一数据会线程不安全。volatile可以保证变量的内存可见性,但原子操作只有赋值(i=1)这一种改变操作,所所以要自己实现变量原子性。jdk提供atomic原子操作对象。
2017-01-25 17:27:55
219
原创 jvm内存结构
jvm内存分为:线程私有内存:栈、程序计数器,公共内存:堆、本地方法区、方法区、直接内存栈存放线程的方法调用、返回值、局部变量、对象引用等信息。程序计数器记录当前线程执行的位置。本地方法栈存放jni,native方法调用信息,类似JVM栈。堆存放所有定义的对象。分为年轻代、年老代,年轻代分为eden区和2个幸存区。方法区,在hotspot虚拟机中也叫
2017-01-25 17:27:38
421
原创 JVMGC机制
GC就是找到不用的对象,回收对象,释放内存。名词解释:minor gc:年轻代回收major gc/full gc:年老代回收当进行年老代回收时,往往伴随至少一次年轻代回收。但在PS回收器时,则会选择只进行major gc。对象的移动过程:初始在eden区分配,当进行一次年轻代gc后,放入存活区。当在存活区来回复制N次(可配置),进入年老代。大对象也会直接放
2017-01-25 17:27:19
1672
原创 JAVA线程池ExecutorService学习
ExecutorService线程池总接口。ThreadPoolExecutor是Executors类的底层实现 。ThreadPoolExecutor的完整构造方法的签名是:ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, Block
2017-01-25 17:26:57
238
原创 JAVA锁机制
synchronized和Lock均为可重入锁。即可为该对象多次加锁,通过锁标志+1进行操作;当所标志为0时,释放所。重入锁目的是为防止死锁发生。synchronized:基于系统内核实现线程等待(通过linux系统pthread_mutex_lock命令进行等待)。 a、将线程通过CAS操作放入ContentionList队列头部。 b、当Ow
2017-01-25 17:26:19
2601
原创 ThreadLocal学习
ThreadLoocal原理ThreadLocal是线程变量,主要为防止多线程环境中,变量访问冲突问题。ThreadLocal为每个线程创建了一个变量副本,实际就是在线程Thread类中有个私有属性,如下图:实际数据存储是在ThreadLocal中的ThreadLocalMap中存储,ThreadLocal相当于一层包装,所有的get,set操作都是对这个m
2017-01-25 17:25:35
306
转载 Linux IO模式及 select、poll、epoll详解
一 概念说明在进行解释之前,首先要说明几个概念:- 用户空间和内核空间- 进程切换- 进程的阻塞- 文件描述符- 缓存 I/O用户空间与内核空间现在操作系统都是采用虚拟存储器,那么对32位操作系统而言,它的寻址空间(虚拟存储空间)为4G(2的32次方)。操作系统的核心是内核,独立于普通的应用程序,可以访问受保护的内存空间,也有访问底层
2017-01-25 15:49:47
266
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人