摘要:
1、并发编程模型的两个关键问题:线程之间的通信和同步。 2、并发线程模型有两种: (1)共享内存:线程之间有公共状态,通过读-写内存中的公共状态进行隐式通信,显示同步。 (2)消息传递:线程之间没有公共状态,必须通过发送消息进行显示通信,隐式同步。 3、Java的并发采用共享内存模型,线程间的通信总 阅读全文
摘要:
1、原子操作:不可被中断的一个或一系列操作。 2、处理器实现原子操作 (1)使用总线锁保证原子性:LOCK#信号锁住总线,处理器独占共享内存。 (2)通过缓存锁来保证原子性:指内存区域如果被缓存在处理器的缓存行中,并且在Lock操作期间被锁定,当它执行锁操作回写到内存时,处理器不在总线上声言LOCK 阅读全文
摘要:
1、利用synchronized实现同步的基础:Java中的每一个对象都可以作为锁。 (1)对于普通同步方法,锁是当前实例对象。 (2)对于静态同步方法,锁是当前类的Class对象。 (3)对于同步方法块,锁是Synchronized括号里配置的对象。 2、synchronized在JVM中的实现原 阅读全文
摘要:
1、volatile是轻量级的synchronized,它在多处理器开发中保证了共享变量的可见性。 2、为了提高处理器速度,处理器不直接和内存进行通信,而是先将系统内存的数据读到内部缓存(L1,L2或其他)后再进行操作,但操作完不知道何时会写到内存。 3、volatile保证可见性的原理是利用处理器 阅读全文