美文网首页
十二、java内存模型与线程

十二、java内存模型与线程

作者: 楊大大大侠 | 来源:发表于2020-01-07 20:52 被阅读0次

    一、内存间交互操作

            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、线程状态转换

                    

    相关文章

      网友评论

          本文标题:十二、java内存模型与线程

          本文链接:https://www.haomeiwen.com/subject/bimooctx.html