线程的通俗讲解

简介: 为什么线程a的代码可以访问在线程b中实例化的对象c?答案是:所有Java对象是在【堆】上分配的,而堆是所有线程可见的,只要线程a握有c对象的引用r,则通过r调用c的方法x完全是可行的,只不过这样一来,方法x就不是运行在线程b上,而是线程a上了! 其实,类(方法和数据)跟线程,一毛钱关系都没有。

为什么线程a的代码可以访问在线程b中实例化的对象c?

答案是:所有Java对象是在【堆】上分配的,而堆是所有线程可见的,只要线程a握有c对象的引用r,则通过r调用c的方法x完全是可行的,只不过这样一来,方法x就不是运行在线程b上,而是线程a上了!

 

其实,类(方法和数据)跟线程,一毛钱关系都没有。可以这么想象,一个仓库(堆heap)里有好多包裹(对象),包裹里面有商品(数据数据),包裹上面有快递单指示该怎么寄送(方法成员),若干个快递员(线程)负责将这些包裹寄出去,每个快递员都可以寄任意一个包裹(堆内所有对象都共享同一个4GB进程地址空间),包裹x可以被快递员a处理,也可以被快递员b处理,但不能同时被二者处理(synchronized)

目录
相关文章
|
7月前
|
并行计算 Java Linux
工作2年,有些人竟然还不懂进程、线程、协程之间的关系!
我们都知道计算机的核心是CPU,它承担了所有的计算任务;而操作系统是计算机的管理者,它负责任务的调度、资源的分配和管理,统领整个计算机硬件;应用程序则是具有某种功能的程序,程序是运行于操作系统之上的。
50 0
|
Linux 编译器 调度
【线程概念和线程控制】(一)
【线程概念和线程控制】(一)
127 0
|
存储
【线程概念和线程控制】(二)
【线程概念和线程控制】(二)
70 0
|
存储 Linux 调度
多线程——线程概念和线程控制
什么是线程,POSIX线程库,线程控制:pthread_create线程创建,pthread_exit线程终止,pthread_join线程回收,pthread_cancel线程取消,pthread_detach线程分离。线程id和地址空间分局,C++语言级别的多线程,二次封装线程库
129 0
多线程——线程概念和线程控制
|
算法 安全 Java
探索多线程编程:线程的本质、状态和属性
探索多线程编程:线程的本质、状态和属性
|
Java API 调度
|
物联网 Linux 调度
线程的概念|学习笔记
快速学习线程的概念
线程的概念|学习笔记
C++多线程 并行与并发 了解进程和线程 浅显的进行传参,调用
C++多线程 并行与并发 了解进程和线程 浅显的进行传参,调用
C++多线程 并行与并发 了解进程和线程 浅显的进行传参,调用
|
数据采集 缓存 算法
库调多了,都忘了最基础的概念 《锁与线程 2 终结篇》
库调多了,都忘了最基础的概念 《锁与线程 2 终结篇》
141 0
库调多了,都忘了最基础的概念 《锁与线程 2 终结篇》

相关实验场景

更多