假设有一台服务器,它的IIS上部署有一个Web应用程序-S,可以通过浏览器或其他方式进行访问。
    假设有A、B、C三台电脑同时访问网站S,IIS接收到3个HTTP请求,然后分别为三个请求各建立一个线程。每个线程都有各自的线程栈,每个用户的数据都放在各自线程栈中,也只有用户线程才能取得对应线程栈中的数据,线程之间不会相互影响。这就是为什么一个网站程序能同时被多个用户访问。
    用户的线程运行时,会生成很多的引用类型的对象,这些对象都存在托管堆上,托管堆不像栈只能被所属的线程访问,它能被所有线程共同访问,那各个线程怎么取得自己创建的对象而不会取到其他线程所创建的对象呢?这是因为对象实例虽然在托管堆上,但实例的引用是在线程栈上的,线程要根据实例的引用才能取得实例数据,而线程栈又只能被对应的线程访问,所以线程只会取到自己创建的对象实例,而不会取到其他用户线程所创建的对象实例,同时也不会被其他用户线程取走对象实例。
    当然,值类型数据就不用说,它们都存在于线程栈上,只有各自的线程才能访问,也就是只有各自的用户可以访问。

最新文章

  1. BZOJ 3932 [CQOI2015]任务查询系统 ——可持久化线段树
  2. 学习了一下javascript的模块化编程
  3. Linux_服务
  4. 《day15---多线程安全问题_JDK1.5的锁机制》
  5. Unable to find vcvarsall.bat解决方法
  6. hdu 4778
  7. Windows中安装Emacs
  8. C Socket初探
  9. IOS的KVC
  10. C#与lua相互调用
  11. js中的浅复制和深复制
  12. liunx分布式监控工具
  13. V7000数据恢复(存储文件系统损坏)案例_北亚数据恢复
  14. MVC Action 返回类型
  15. 深入理解Java之线程池(爱奇艺面试)
  16. redhat 7安装CentOS 7 yum源
  17. 执行shell脚本时提示bad interpreter:No such file or directory的解决办法
  18. 安装JDK、Tomcat、Maven’详细步骤
  19. Linux:su和su-的区别
  20. java 中list进行动态remove处理

热门文章

  1. ARM体系结构与编程-3
  2. Finite Encyclopedia of Integer Sequences(找规律)
  3. 前端安全之XSS和csrf攻击
  4. Spring学习记录(一)
  5. 【SQL】连接 —— 内连接、外连接、左连接、右连接、交叉连接
  6. 【mysql】 数据库字符集和排序规则
  7. Python知识点进阶——迭代器
  8. Python知识点入门笔记——特色数据类型(集合)
  9. Redis之String类型操作
  10. DFS:Tempter of the Bone (规定时间达到规定地点)