5月2号就开始学习多线程的知识点了,到现在也20天了,虽然每天只有那么一两个小时,尽管也在写日记来记录,但还是得整理整理,再次理解理解。
一开始就将一个类设计成线程安全的,比在后期重新修复它更容易
一.线程生命周期
1.新建状态
2.就绪状态
3.运行状态
4.阻塞状态
5.死亡状态
二.一些基础概念
java中首要的同步机制是Synchronized关键字,他提供独占锁。除此之外,术语‘同步’还包括volatile变量,显示锁和原子变量的使用。
独占锁:悲观锁,只允许一个线程加锁,资源可读写。
共享锁:乐观锁,允许多个线程加锁,资源可被多个读操作访问,可被一个写操作访问,但两者不能同时进行。
java强制原子性内置锁机制:Synchronized块。其包含两个部分:锁对象的引用,这个锁保护的代码块。
重进入:当一个线程请求其他线程已经占有的锁时,请求线程会被阻塞。然而 java 的内部锁 synchronized 是可重进入的,因此线程在试图获得它自己占有的锁时,请求会成功。
加锁可保证原子性和可见性,volatile只能保证可见性。
使用volatile标准:
a.写入变量时并不依赖变量的当前值;或者能确保只有单一的现成修改变量的值
b.变量不需要与其他的状态变量共同参与不变约束
c.访问变量时,没有其他的原因需要加锁
《并发编程》这个分类下的博客,学习路线是参照《Java并发编程实践》,同时参考了网上的众多博客,文档等。