十二、java内存模型与线程

一、内存间交互操作

        lock:作用于主内存中的变量

        unlock:作用于主内存中的变量

        read:作用于主内存中的变量

        load:作用于工作内存中的变量

        use:作用于工作内存中的变量

        assign:作用于工作内存中的变量

        store:作用于工作内存中的变量

        write:作用于主内存中的变量

二、volatile

       1、 可见性

                java里面的运算并非原子操作,导致volatile变量的运算在并发下一样是不安全的。

                不符合下列规则仍要加锁:

                        运算结果并不依赖变量的当前值,或者能够确保只有单一的线程修改变量的值。

                        变量不需要与其他的状态变量共同参与不变约束。

        2、禁止指令重排序优化

三、原子性、可见性、有序性

    原子性:read、load、assign、use、store、write

    可见性:在变量修改后将新值同步回主内存,在变量读取主内存前刷新变量值,依赖主内存为传递媒介实现可见性、

    有序性:在本线程内观察,所有的操作都是有序的

四、先行发生原则

        程序次序规则:一个线程内

        管程锁定规则:一个unlock操作先行发送于后面同一个锁的lock操作

        volatile原则:

        线程启动规则:

        线程终止规则:

        线程中断规则:

        对象终结规则:

        传递性:

五、java与线程

       1、 线程的实现

                    使用内核线程实现

                    使用用户线程实现

                    使用用户线程加轻量级进程混合实现

        2、线程调度方式

                    协同式

                    抢占式

        3、线程状态转换

                

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容