- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在阅读一个多线程问题,这个问题出现在我的脑海中,现在我们知道,当一个线程需要启动一个线程类的实例时,然后在我们调用start方法后,加载run方法在类区域中,然后调用另一个方法所以我的问题是,
当一个线程未结束,而另一个线程被调用时,其run方法被加载,是否被加载到同一个类区域?
现在不同线程的不同堆栈有什么好处?
可以使用不同的线程同时调用同一个方法吗?如果可以,怎么可能?
最佳答案
让我们从这个开始。
... after we call start method, run method is loaded in class area, and then the other method are called ...
您的描述是乱码,我不明白您认为正在发生什么。
实际发生的情况如下...假设您使用的是 Thread
而不是 Thread
的子类。
父线程创建 Thread
实例,并提供一个 Runnable
对象作为构造函数参数。 Runnable
保存在 Thread
对象的私有(private)变量中。
父线程在新的 Thread
对象上调用 start()
。
JVM 分配一个新的线程堆栈,并请求操作系统(通常)使用该堆栈创建并启动一个新的 native 线程。
新创建的子线程首先调用Thread.run()
,该子线程又调用Runnable<的
。这些调用(自然地)使用我们之前分配的新线程堆栈进行。run()
方法
“同时”,父线程从 start()
调用返回,并继续运行,独立于子线程。
现在回答你的问题。
when one particular thread is not finishes,and the other thread is called ,its run method is loaded,whether it is loaded into the same class area?
这对我来说没有意义。您的短语“加载到同一类区域”与实际发生的情况不符。
now what's the benefit of different stack for different threads?
堆栈用于保存方法调用的局部变量和参数。当您开始方法调用时,它们通过将帧(由给定方法调用的局部变量组成)“插入”堆栈来进行操作。然后,当方法调用终止时,该帧将从堆栈中“弹出”。这一方案允许方法调用其他方法(可能是递归的),而一个调用不会破坏另一个方法的变量。
如果有两个线程“同时”执行,它们将独立执行对不同方法的不同调用序列。如果您(假设)将帧放入一个堆栈中,那么两个线程将通过各自的堆栈推送和弹出操作相互干扰。
and can a same method be called using different thread concurrently?if yes,how it is possible?
是的...因为不同的线程都有不同的堆栈来保存各自的变量。见上文。
could you please explain how does a thread starts?
我上面的描述已经涵盖了这一点。
<小时/>请注意,我在上面的引号中同时使用了这个词。我想强调的是,没有指定“同时”发生的两个 Action / Action 序列是否同时发生。它们可能会这样做(例如,如果您有多个核心)...或者操作可以以某种方式交错。实际行为取决于您的 Java 平台,并且每次运行/执行可能会有所不同。
关于java - 不同的线程有不同的栈,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21677003/
栈一种常见的特殊线性数据结构,其特殊之处在于其操作顺序,下面会详细介绍,也正因为其特性,因此栈可以轻松解决表达式求值、括号匹配、递归算法、回溯算法等等问题。 01、定义 栈的特殊性表现为操作受
目录 实践1 —— 从字符串中移除星号 栈和数组存储数据的方式一样,它们都只是元素的列表。不同之处在于栈的以下3个限制: 数据只能从栈末插入; 数据只
准备工作 工具:idea+jdk8 技术要求:java基础语法 编码环节 首先,我们得先确定下来,用什么数据来模拟栈的操作。由于是一个一个的元素放入栈里面,我们可以考虑用数组来实现。
0. 学习目标 栈和队列是在程序设计中常见的数据类型,从数据结构的角度来讲,栈和队列也是线性表,是操作受限的线性表,它们的基本操作是线性表操作的子集,但从数据类型的角度来讲,它们与线性表又有着巨大的不
在可以使用递归(在堆栈中存储状态)和对象创建(在堆中创建新对象)的场景中。 问题 在对象创建和递归之间进行选择时应考虑哪些参数? 我的研究得出以下结论(需要验证这一点) 当可用内存较少时:使用递归 可
下面是我编写的用于检查内存对齐的示例程序。 Pavan@Pavan-pc:~/working_dir/pavan/C$ cat mem3.c #include #include
Instapaper 和 Twitterrific 等应用启动的 View 不是其导航堆栈的 Root View 。我们知道这一点,因为初始 View 已经有一个后退按钮。 Instapaper 推出
有没有办法在调试或正常运行期间的某个时刻可视化 Activity 堆栈? 最佳答案 您可以通过 Activity 管理器获取一些有用的信息。 ActivityManager manag
我想编写一个应用层协议(protocol),在发送 GET 请求时使用 TCP 返回特定的 ASCII 文本。我读了第一HTTP specification和 the SMTP specificati
1、堆和栈的速度性能分析 堆和栈是jvm内存模型中的2个重要组成部分,自己很早以前也总结过堆和栈的区别,基本都是从存储内
一: 概念 栈,同样是一种特殊的线性表,是一种last in first out(lifo)的形式,现实中有很多这样的例子,
java中stack类继承于vector,其特性为后进先出(lastinfirstout). 入栈和出栈实例图: 实例图的java代码实例: ?
1、单链表 1、在我们数据结构中,单链表非常重要。它里面的数据元素是以结点为单位,每个结点是由数据元素的数据和下一个结点的地址组成,在java集合框架里面 LinkedList、Ha
本文实例讲述了Python编程实现双链表,栈,队列及二叉树的方法。分享给大家供大家参考,具体如下: 1.双链表 ?
我一遍又一遍地阅读定义,但我仍然不明白ARM中的SP和LR是什么?我了解PC(它显示下一条指令的地址),SP和LR可能类似,但我只是不明白它是什么。你能帮我一下吗? 编辑:如果你能用例子来解释它,那就
我必须使用索引 0 作为堆栈的顶部,并且在实现此操作时遇到问题。我得到了所有 null,但输出 100、200 和 300 是我得到的唯一数字。我忽略的实现有什么问题吗? push 方法应该实现 Ar
我正在用 Java 解决汉诺塔问题。我选择使用 Stacks 作为钉子,除了 move 方法之外,一切都正常。我有规范和 JUnit 测试类,目前通过了 7 项测试中的 6 项,但在移动测试中失败了。
这个问题在这里已经有了答案: 关闭 11 年前。 Possible Duplicate: Does this type of memory get allocated on the heap or
首先,抱歉我的英语不好。我将尝试解释我的问题: 我有一个 RootViewController(基于导航的项目)。因此,它显示了表格 View ,当用户选择表格的一行 (didSelectRowAtI
我有一个看起来像这样的类 class A { int b; void B() { int c; } } int main() { A asdf;
我是一名优秀的程序员,十分优秀!