zoukankan      html  css  js  c++  java
  • 谈谈对线程安全的理解

        谈谈对线程安全的理解

        线程安全可以理解为内存安全,堆是内存共享,可以被所有的内存访问。

        当多个线程访问同一个对象时,如果不进行额外的同步控制或者其他的协调操作,调用这个对象的行为都可以获得正确的结果,我们就说这个对象时线程安全的。

        堆是进程和线程共有的空间,分全局堆和局部堆,全局堆就是所有没有分配的空间,局部堆就是用户分配的空间,堆在操作系统对进程初始化的时候分配,运行过程中也可以向系统要额外的堆,但是用完了要还给系统,不然就是内存泄漏。

        在java中,堆是java虚拟机所管理的内存中最大的一块,是所有线程共享的一款线程区域,在虚拟机启动时创建,堆所存在的内存区域唯一目的就是存放对象实例,几乎多有的对象实例和数组都放在堆中。

        栈是每个线程独有的,保存其运行状态和局部自动变量的。栈在线程开始的时候初始化,每个线程的栈互相独立,栈是线程安全的。操作系统在切换线程的时候回自动切换栈,栈空间不需要再高级语言里显式的分配和释放。

        在每个进程的内存空间都有一块特殊的公共区域,通常称为堆内存,进程内多有的线程都可以访问该区域,这就是造成问题的潜在原因。

  • 相关阅读:
    InstallShield自定义对话框模板代码(转)
    破解汇编知识(转)
    Openrowset数据库远程操作
    SQL类似sleep延时语句
    C#结束线程
    JavaScript中相应ActiveX事件
    Visual C# .NET 命令行编辑器
    AfxBeginThread
    atoi,atol,strtod,strtol,strtoul类型转换(转)
    SQLServer PadLeft,PadRight
  • 原文地址:https://www.cnblogs.com/hrlizhi/p/14640820.html
Copyright © 2011-2022 走看看