1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
| 主内存和工作内存 内存间交互操作 volatile类型的特殊规则 针对long和double的特殊规则 64为原子操作 特征 原子性: 原子操作 可见性: 一个县城修改了共享变量的值时,其他线程能够立即得知这个修改. 除了volatile之外,还有synchronized和final也可以实现可见性 有序性: 本线程内所由操作有序,看其他线程基本是无序的. happen-befer原则 程序次序规则: 一个线程内前面的操作发生在后边之前 管程锁定规则: unlock需要在lock之后 volatile变量规则: 先写后读 线程启动规则: start()在里边的代码前 线程中断规则: stop()在里边的代码后 对象终结规则: 对象初始化,发生在finalize()之前 传递性: a->b, b->c ====> a>c 线程实现: 内核线程实现: 1:1 使用用户线程实现: 1:n实现 使用用户线程加轻量级进程混合实现: n:m实现 线程状态变换
new blocked start() synchronized() <---> <--> running <--> <--> wait()notify()/notifyAll() run()结束 waiting terminal
|