线程的通俗讲解

简介: 为什么线程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)

目录
相关文章
|
8月前
|
存储
【线程概念和线程控制】(二)
【线程概念和线程控制】(二)
42 0
|
8月前
|
Linux 编译器 调度
【线程概念和线程控制】(一)
【线程概念和线程控制】(一)
84 0
|
7月前
|
算法 安全 Java
探索多线程编程:线程的本质、状态和属性
探索多线程编程:线程的本质、状态和属性
|
7月前
|
存储 Linux 调度
多线程——线程概念和线程控制
什么是线程,POSIX线程库,线程控制:pthread_create线程创建,pthread_exit线程终止,pthread_join线程回收,pthread_cancel线程取消,pthread_detach线程分离。线程id和地址空间分局,C++语言级别的多线程,二次封装线程库
82 0
多线程——线程概念和线程控制
|
8月前
|
Java API 调度
|
11月前
|
Java
线程和进程概念区别—及线程常用方法和状态
进程和线程是操作系统中的两个基本概念。 进程是程序执行的基本单位,每个进程都有自己独立的内存空间和系统资源,它拥有自己的虚拟地址空间、代码段、数据段、堆栈段等。一个程序可以对应多个进程,每个进程之间是独立运行的,互相之间不会影响。
130 0
|
存储 Linux 调度
Linux多线程:线程概念、线程间的独有与共享、多线程VS多进程,线程控制:线程创建、线程终止、线程等待、线程分离
Linux多线程:线程概念、线程间的独有与共享、多线程VS多进程,线程控制:线程创建、线程终止、线程等待、线程分离
193 0
C++多线程 并行与并发 了解进程和线程 浅显的进行传参,调用
C++多线程 并行与并发 了解进程和线程 浅显的进行传参,调用
C++多线程 并行与并发 了解进程和线程 浅显的进行传参,调用
|
数据采集 缓存 算法
库调多了,都忘了最基础的概念 《锁与线程 2 终结篇》
库调多了,都忘了最基础的概念 《锁与线程 2 终结篇》
106 0
库调多了,都忘了最基础的概念 《锁与线程 2 终结篇》