Java Thread:请澄清这个理解

2023-12-20

public class Qn {

    static class Friend {
        private final String name;

        public Friend(String name) {
            this.name = name;
        }

        public String getName() {
            return this.name;
        }

        // recipient - the person who greets
        public synchronized void sayHi(Friend recipient) {
            System.out.format("%s" + " said hi to %s %n",
                      this.name, recipient.getName());
        }
    }

    public static void main(String[] args) {
        final Friend john = new Friend("John");
        final Friend peter = new Friend("Peter");

        new Thread(new Runnable() {
            public void run() {
                john.sayHi(peter);
            }
        }, "thread1").start();
    }
}

问题:

如果理解正确,请澄清以下内容

  1. 调用时john.sayHi(), 线程thread1已经获得了内在的 锁的john对象以便访问sayHi()的方法john object.

  2. 线程thread1在JVM中独立运行。

我在网上看到这些说法,不知道什么意思! 【线程怎么可以运行在对象上!!!事实上线程执行代码,对吗?]

  1. 线程thread1不在 JVM 内的任何其他对象上运行。

  2. 线程永远不会在任何对象上运行。线程永远不会由对象执行。 一个线程永远不会在任何其他线程上运行。线程总是直接在 JVM 中运行。


调用时john.sayHi(), 线程thread1已获得内在锁定john对象以便访问sayHi()约翰对象的方法。

更确切地说:

调用时john.sayHi(), 线程thread1将等待,直到它可以获得锁john执行之前sayHi。一旦获得锁,就会执行sayHi。当方法退出时,它将释放锁。

线程thread1在JVM中独立运行。

独立于什么?其他线程?是的,直到它尝试获取锁为止。此时,它可能会受到其他线程的阻碍。当它有锁时,它可以阻止其他线程。

线程thread1不在 JVM 内的任何其他对象上运行。

线程在 CPU 上运行,而不是在对象上运行。

你是问一个线程是否可以并行执行多个方法?如果是这样,答案是否定的。

线程永远不会在任何对象上运行。

线程在 CPU 上运行,而不是在对象上运行。

线程永远不会由对象执行。

线程不由任何东西执行。线程执行代码。

一个线程永远不会在任何其他线程上运行。

线程运行在CPU上,而不是线程上。

线程总是直接在 JVM 中运行。

JVM 有一个虚拟 CPU,线程在该虚拟 CPU 上运行。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java Thread:请澄清这个理解 的相关文章

  • 如何将webview内容划分为多个页面

    我必须使用 Android 上的 PdfDocument 从 webView 创建 PDF https developer android com reference android graphics pdf PdfDocument htm
  • ZeroDateTimeBehavior=convertToNull 在使用 hibernate 的 jdbc url 中不起作用

    通过 extern 属性文件 url 指定如下 jdbc mariadb xxxxx 3306 xxxxx zeroDateTimeBehavior convertToNull 连接工作正常并且能够查询数据库 通过休眠 我创建了一个映射到带
  • 二元运算符 >=、-、* 的错误操作数类型

    我无法弄清楚如何修复代码中不断出现的这些错误 import java util Scanner public class Unit02Prog1 public static void main String args Scanner inp
  • Java:一种将 Mime(内容)类型与 CommonsMultipartFile 中的文件扩展名相匹配的方法

    在我的公司 出于额外原因 我需要将 mime 类型与文件扩展名进行比较 我有一个CommonsMultipartFile 我正在尝试找出进行这种比较的最佳方法 我见过一个MimetypesFileTypeMap 但不确定这是否适用于此 我试
  • 清空变量不会使方法引用无效[重复]

    这个问题在这里已经有答案了 为什么代码不抛出NullPointerException当我使用与变量绑定的方法引用时dog我后来分配了null to 我正在使用 Java 8 import java util function Functio
  • 如何检查单词是否在wordNet中

    我开始了解wordNet直到我知道我找到了synonymous对于一个特定的词 现在我有一个文件 我想使用标记化该文本n gram例如 String s I like to wear tee shirt 使用后n gram这将是 I lik
  • 从字符串中删除重音符号

    Android 中有没有什么方法 据我所知 没有 java text Normalizer 可以从字符串中删除任何重音 例如 变成 eau 如果可能的话 我想避免解析字符串来检查每个字符 java text NormalizerAndroi
  • 为 REST API 生成 Swagger UI 文档

    我使用 Java 中的 JAX RS Jersey 开发了 REST API 我想为其转换 生成基于 Swagger 的 UI 文档 谁能以简单的方式告诉我如何做到这一点的精确 步骤 很抱歉 他们网站上给出的步骤对我来说有点模糊 有多种方法
  • Spring Security 角色层次结构不适用于 Thymeleaf sec:authorize

    我正在使用 Spring Security 3 2 5 RELEASE 和 ThymeLeaf 2 1 4 RELEASE 我已经在安全上下文中定义了角色层次结构 在我的视图层中我正在使用sec authorize属性来定义菜单项 我希望看
  • 获取接收者的设备令牌以在 Firebase 中发送通知

    所以我正在学习如何使用 firebase 发送设备到设备的通知 我看到了这个answer https stackoverflow com a 42548586 5237289发送通知 看起来很简单 现在 我知道要获取发件人的令牌 它应该如下
  • Hybris:如何在impex中导入zip文件中的媒体?

    我知道我们可以导入未像这样压缩的图像 siteResource jar com project initialdata constants ProjectInitialDataConstants projectinitialdata imp
  • 向Java类库添加函数

    我使用的 Java 类库在很多方面都不完整 有很多类我认为应该内置其他成员函数 但是 我不确定添加这些成员函数的最佳实践 让我们调用不足的基类A class A public A long arbitrary arguments publi
  • 如何在一次操作中使用 Thymeleaf 检查 null 和空条件?

    有什么方法可以检查 Thymeleaf 中的 null 和empty 条件吗 方法一 1 variable1 variable2 variable3 2 variable null 3 variable 如果我们结合两个条件 例如 vari
  • 线程数组?

    所以我在理解如何避免线程的顺序执行时遇到了问题 我试图创建一个线程数组并在单独的循环中执行 start 和 join 函数 这是我现在拥有的代码示例 private static int w static class wThreads im
  • 在 Tensorflow-lite Android 中将位图转换为 ByteBuffer(浮点)

    在用于图像分类的tensorflow lite android演示代码中 图像首先转换为ByteBuffer格式以获得更好的性能 这种从位图到浮点格式的转换以及随后到字节缓冲区的转换似乎是一个昂贵的操作 循环 按位运算符 float mem
  • 难以理解 通配符

    我有一个非常基本的问题 下面的代码无法编译 假设 Apple Extends Fruit List
  • 为什么/何时应该使用泛型方法?

    学习Java的时候遇到过通用方法 public
  • Spring MVC:通用 DAO 和服务类

    我正在 Spring MVC 中编写网页 我使用 Generic DAO 编写了所有 DAO 现在我想重写我的服务类 我该如何写 通用服务 我的 DAO 如下 DAO package net example com dao import j
  • FragmentMap + ActionBar 选项卡

    我一直在尝试插入一个MapView进入一个ActionBar Tab 但我什至无法解决问题 即使谷歌搜索 这是主要活动 Override public void onCreate Bundle savedInstanceState supe
  • MyBatis 枚举的使用

    我知道以前有人问过这个问题 但我无法根据迄今为止找到的信息实施解决方案 所以也许有人可以向我解释一下 我有一个表 状态 它有两列 id 和 name id是PK 我不想使用 POJO Status 而是使用枚举 我创建了这样一个枚举 如下所

随机推荐

  • 如何在 GDScript 中实现结构?

    GDScript 中是否有相当于 C 结构 类的东西 例如 struct Player string Name int Level 戈多3 1 1gdscript不支持structs 但使用可以实现类似的结果classes dict or
  • Windows 7 64 / Visual Studio 2008 / OpenCV2.1错误:“应用程序无法正确启动(0xhex)..”

    我正在 64 位模式下从分支顶部构建 OpenCV2 1 当我将库链接到我的代码 在 XP 上以 32 位模式工作 时 我收到对话框 应用程序无法正确启动 0xc0150002 单击 确定 关闭应用程序 当我启动应用程序时 事件查看器指向
  • 将一个时间范围按其他时间范围分割成多个部分

    我有一项复杂的任务 几天来我一直在用头撞墙 我已经尝试了大约 4 种不同的方法 但是每种方法似乎都停滞不前 并且变得非常令人沮丧 我有一个时间范围 例如 14 30 00 至 18 30 00 考虑某人轮班的时间范围 在此时间范围内 他们表
  • jasmine 与 jscoverage 自动化测试

    一直在看 jsunit 和 jcoverage 演示 单击覆盖率报告链接 在新选项卡中打开此内容 我想知道是否有人对 Jasmine 和 JSCoverage 做过类似的事情 我有点不确定如何继续 编辑 我想知道有什么可以和茉莉花记者一起做
  • fopen b 标志是什么

    在阅读中php fopen 的文档 http php net manual en function fopen php对于 php 我看到以下内容 为了可移植性 强烈建议您在使用以下命令打开文件时始终使用 b 标志fopen http ph
  • 某些 lua/c++ 代码中出现 SIGSEGV 错误

    以下代码以 SIGSEGV 错误结束 extern C include lua lua h include lua lualib h include lua lauxlib h int main int argc char argv lua
  • 创建具有左偏概率分布的随机数

    我想在 1 100 之间随机选择一个数字 这样获得数字 60 100 的概率高于 1 59 我希望数字 1 100 的概率为左偏分布 也就是说 它有一个长尾和一个峰 大致意思是 pers np arange 1 101 1 prob
  • 在 IF ELSE 块中包含 InstallDir

    我尝试使用以下代码 The default installation directory InstallDir PROGRAMFILES PRODUCT NAME to include x64 nsh If RunningX64 The d
  • css 中的图像轮播无法正常工作

    我正在制作一个网站的轮播 但宽度有问题 我希望每个图像都占据视口的整个宽度 但最后一个图像出现在第一个图像的下方 即使滑块动画也无法通过在右侧滑动额外内容来正确滑动图像 任何帮助 将不胜感激 carousel container carou
  • 将 Angular2 应用程序包含到 Asp.Net Webforms 页面

    当我将 angular cli ng build 生成的带有 aot 配置的 js 文件包含到我的 aspx 页面中时 我在 Chrome 控制台中收到一条错误消息 gt TypeError Error parameterCount is
  • 函数式语言对于飞行模拟器来说是一个不错的选择吗? Lisp 怎么样?

    我做面向对象编程也有几年了 函数式编程做的不多 我对飞行模拟器很感兴趣 并且对 Lisp 的函数式编程方面感到好奇 在面向对象的范例中 飞行模拟器或任何其他现实世界模拟器对我来说都是有意义的 这是我的问题 面向对象是表示现实世界模拟领域的最
  • .node 不是有效的 Win32 应用程序

    在 Window 10 Home x64 位 上 我尝试在命令提示符下运行以下命令 节点索引 js 错误如下 C Users cooldudeasateen OneDrive Coding sil node modules bindings
  • 如何避免在父组件状态更新时重新渲染循环中的所有子组件

    我有一个子组件 它位于父组件的循环内 当子组件之一更新父组件的状态时 它会重新渲染所有子组件 因为它是循环的 我怎样才能避免每次迭代的重新渲染 function Parent const selectedChild setSelectedC
  • 使用 React CSS 过渡组在输入时使组件错开

    我想为在 ReactCssTransitionGroup 中渲染的所有子级添加交错效果 但不知道如何去做 我在看this https stackoverflow com questions 31394719 react transition
  • F# 对元组的成员约束

    当我意识到我需要在某个地方提供额外的值时 我在编写 F 时通常都会有一个 哦耶 的时刻 这通常可以通过向传递的元组添加另一个值来轻松完成 然而 这意味着各种地图 排序 收集 等 需要更新 特别是函数 fst snd 仅适用于长度为 2 的元
  • 如何在flutter中自定义单选按钮?

    我想做这样的按钮 我尝试使用单选按钮 但无法自定义它们 你有什么想法我该怎么做吗 我编写了一个可重复使用的小部件 它模仿单选按钮的行为 自定义无线电小部件 class CustomRadioWidget
  • Crystal Reports:如何将参数从子报表传递到父报表?

    我有许多子报告 我在其中计算总计 在主要报告中 我需要这些总数的总和 我不知道如何访问子报告中的总计 您需要考虑使用共享变量 父报表及其子报表都可以读取和写入该变量 例子 在父报告中 有一个用于初始化称为 InitTotal 的公式 其中包
  • System.Drawing 内存不足异常

    我的应用程序图形引擎抛出这些异常 它们都被一个空的 catch 块消耗掉 早期 我发现了一个没有被困住的东西 我记得与笔加宽有关 我用 try 和一个空的 catch 块包围它 看来这些异常对生成的绘图没有影响 我已经阅读了一些相关内容 但
  • 覆盖 ListBox 的 DrawItem - 未选择的项目不会重绘

    这是一个 C 桌面应用程序 这DrawStyle我的财产ListBox被设定为OwnerDrawFixed 问题 我重写 DrawItem 以使用不同的字体绘制文本 并且它有效 但是 当我开始在运行时调整表单大小时 所选项目会正确绘制 但其
  • Java Thread:请澄清这个理解

    public class Qn static class Friend private final String name public Friend String name this name name public String get