美文网首页
关于java多线程

关于java多线程

作者: 神仙苏醒 | 来源:发表于2018-10-29 14:47 被阅读0次

先来看看线程状态

有了线程,那么线程是运行在哪里的,还有线程的所持有的资源又有哪些那?哪些是共享的,哪些是私有的:

脑图:

那么有了线程就有多线程,多线程的安全优势怎么回事?怎么保证的那?

看到了吗? CPU 不相信内存能跟得上自动处理速度,自己整了三级缓存,这就导致了,缓存不一致问题的出现,和我们的多级缓存机制是多么的像啊? 怎么破那?

如下图:

于是又出现了缓存一致性标准:

实际上,线程操作堆中共享对象数据时并不是直接操作对象所在的那块内存,这里称之为主内存;

而是将对象拷贝到线程私有的工作内存中进行更新,完成后再将最新的数据值同步回主内存,

而多个线程在同一时刻将一个对象的值改得七七八八,然后再同时同步给对象所在的内存区域,那么以谁更新的为准就成了问题了。

为了防止这种情况出现,Java提供了同步机制,确保各个线程按照一定的机制同一时刻只能运行一个线程更新主内存的值。

注意,这里所讲的主内存、工作内存与Java内存区域中的Java堆、栈内存、方法区等并不是同一个层次的内存划分。

如果勉强类比,从变量、主内存、工作内存的定义来看,主内存主要对应于Java堆中对象实例数据部分,

而工作内存则对应于虚拟机栈中使用的部分内存区域;从更低层次类比,主内存就直接对应于物理硬件的内存,

而为了获取更好的运行速度,虚拟机(甚至是硬件系统本身的优化措施)可能会让内存优先存储于寄存器和高速缓存中,

因为程序运行时主要访问读写的是工作内存。

相关文章

  • 关于多线程面试的一些问题

    关于多线程的一些问题(java) 标签(空格分隔): 并发 面试 多线程 java中有几种方法可以实现一个线程? ...

  • 带你搞懂Java多线程(五)

    带你搞懂Java多线程(一)带你搞懂Java多线程(二)带你搞懂Java多线程(三)带你搞懂Java多线程(四) ...

  • 带你搞懂Java多线程(六)

    带你搞懂Java多线程(一)带你搞懂Java多线程(二)带你搞懂Java多线程(三)带你搞懂Java多线程(四)带...

  • Java多线程目录

    Java多线程目录 Java多线程1 线程基础Java多线程2 多个线程之间共享数据Java多线程3 原子性操作类...

  • redis分布式锁与多线程

    简介 关于多线程   首先,先复习一下Java多线程。我们都知道,启动一个Java程序,操作系统会为其创建一个进程...

  • 扣丁学堂带你深入理解Java多线程核心知识之跳槽面试必备技能

    今天扣丁学堂Java培训老师给大家介绍一下关于深入理解Java多线程核心知识之跳槽面试必备技能详解,首先多线程相对...

  • 关于Java里面多线程同步的一些知识

    # 关于Java里面多线程同步的一些知识 对于任何Java开发者来说多线程和同步是一个非常重要的话题。比较好的掌握...

  • JAVA 多线程总结(一)

    在网上查找了很多关于java多线程的知识,各位大牛对java 多线程的讲解和到位,我在这里主要是对大牛技术贴做一些...

  • java多线程--Callable

    **移步[java多线程系列文章]Java多线程(二十二)---LockSupport工具Java 停止线程 一、...

  • 关于java多线程

    先来看看线程状态 有了线程,那么线程是运行在哪里的,还有线程的所持有的资源又有哪些那?哪些是共享的,哪些是私有的:...

网友评论

      本文标题:关于java多线程

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