Java 线程和同步块

2024-01-19

假设我正在执行一个synchronized某个线程内和内的代码块synchronized我调用一个方法,该方法生成另一个线程来处理需要与第一个方法相同的锁的同步代码块。所以在伪 Java 代码中:

public void someMethod() {
  synchronized(lock_obj) {
    // a whole bunch of stuff...

    // this is the last statement in the block
    (new Thread(someOtherMethod())).start();
  }
    // some more code that doesn't require a lock
}

public void someOtherMethod() {
  // some setup code that doesn't require a lock

  // return the stuff we want to run in another thread
  // that does require a lock
  return new Runnable() {
    @Override
    public void run() {
      synchronized(lock_obj) {
        // some more code
      }
    }
  };
}

我不知道如何理解该代码。我写的东西合法吗?从语法上讲,我没有看到任何问题,但我不确定如何通过这样的代码进行推理。所以当我执行someOtherMethod()为了创建一个实例Runnablereturn 语句之前的代码在什么范围内运行?它是否作为第一个同步块的一部分执行?假设还有一些其他线程也在工作,可能需要锁定lock_obj.


在创建可运行对象和线程期间,您仍然持有锁,但是在调用 start 之后和线程实际获取之前,您将放弃锁。新线程将不得不与其他线程竞争锁。

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

Java 线程和同步块 的相关文章

  • 获取jdbc中表依赖顺序

    我在 MySQL 数据库中有一组表 A B C D 依赖关系如下 B gt C gt A 和 D gt A 也就是说 A 有一个 PrimaryKey C 有一个外键指向 A 的主键 B 有一个外键指向 C 的主键 类似地 D 有一个外键指
  • 如何在数据库中对 (Java) 枚举进行建模(使用 SQL92)

    您好 我正在使用名为 性别 的列对实体进行建模 在应用程序代码中 性别应该是一个 Java 枚举类型 有 2 个值 男性和女性 知道作为数据类型的枚举不是通用 SQL 语言 92 的一部分 您将如何建模它 数据模型必须是可移植的 以便由多个
  • Maven 目标的默认阶段?

    据我了解 在 Maven 中 插件目标可以附加到生命周期阶段 如果没有定义 默认阶段是什么 根据我的经验 这取决于插件的目标 例如 组装 单个 http maven apache org plugins maven assembly plu
  • 空 EntityManager/EJB 注入 MDB

    我有一个消息驱动 bean MDB 部署到 WebLogic 12 1 3 我尝试使用 PersistenceContext 注释将实体管理器注入 MDB 但实体管理器为空 我还尝试注入一个简单的无状态会话 bean 它也是空的 但是 Me
  • 如何屏蔽 Protobuf 中的某些字段

    我找不到一种方法来屏蔽 protobuf 结构中的某些字段 我确实阅读了有关 FieldMaskUtil 的内容并尝试了几个示例 但它似乎做了相反的操作 即复制 FieldMask 中提到的字段 这与我想要的不同 这是示例结构和相应的测试代
  • 带有面板的 Java Swing JToolbar:外观和感觉

    我有一个JToolbar其中包含多个JPanels 需要 因为我希望每个都有特定的边界 不幸的是 外观管理器无法识别JPanels属于工具栏和JButtons因此 渲染器与普通按钮一样 即没有工具栏上的特殊鼠标悬停效果 更换JPanels
  • 更改 JTextPane 的大小

    我是Java新手 刚刚在StackOverflow中找到了这段代码 ResizeTextArea https stackoverflow com questions 9370561 enabling scroll bars when jte
  • 无法在 Mac OS X 上启动应用程序 我收到错误 LSOpenURLsWithRole() 应用程序失败,错误为 -10810

    问题 我正在尝试启动一个应用程序 遗传网络分析仪 http www genostar com category products gna 但它默默地失败了 使用时open gna app产生以下错误消息 LSOpenURLsWithRole
  • MessageDigest MD5 算法未返回我期望的结果

    我脑后的某个东西告诉我 我在这里遗漏了一些明显的东西 我正在将现有的 java 项目与第三方 api 集成 该第三方 api 使用 api 密钥的 md5 哈希进行身份验证 它对我不起作用 在调试过程中我意识到我生成的哈希值与他们提供的示例
  • 如何获取 Android 中临时文件的文件大小?

    如果我使用 openFileOutput 创建并写入临时文件 写入完成后如何获取文件大小 我希望这可以帮助你 File file new File selectedPath int file size Integer parseInt St
  • 更改 RowLayout SWT Java 中元素的顺序

    有没有办法更改在行布局中创建的元素的顺序 我想将其显示在元素中 首先显示 例如 如果我创建 element1 则 element2 element3 element4 我想看到的布局为 元素4 元素3 元素2 元素1 这意味着最后创建的元素
  • XSLT:我们可以使用abs值吗?

    我想知道在 XSLT 中我们是否可以使用 math abs 我在某处看到过这个 但它不起作用 我有类似的东西
  • 在多模块项目中访问绑定适配器

    我有一个多模块项目 其中应用程序模块包含我的绑定适配器 而我的功能模块取决于我的应用程序模块 因为它是动态功能模块 应用程序 包含绑定适配器 gt 动态功能模块 存在布局的地方 我在所有模块中启用了数据绑定和 kapt 我无法成功构建应用程
  • NoSuchMethodError:将 Firebase 与应用程序引擎应用程序集成时

    我试图将 firebase 实时数据库与谷歌应用程序引擎应用程序集成 我在调用时收到此错误 gt DatabaseReference ref FirebaseDatabase gt getInstance gt getReference t
  • 删除 ArrayList 对象问题

    我在处理作业时遇到从 ArrayList 中删除对象的问题 如果我使用 正常 for 循环 它的工作原理如下 public void returnBook String isbn for int i 0 i lt booksBorrowed
  • setKeyListener 将覆盖 setInputType 并更改键盘

    大家好 我在两个设备之间遇到问题 在实践中使用InputType和KeyListener我正在操纵一个EditText让它从数字键盘接收逗号和数字 有关更多背景信息 请检查我之前的question https stackoverflow c
  • C# 的空条件委托调用线程安全吗? [复制]

    这个问题在这里已经有答案了 这就是我一直以来编写事件引发者的方式 例如属性更改 public event PropertyChangedEventHandler PropertyChanged private void RaisePrope
  • 使用互斥锁来阻止临界区外部的执行

    我不确定我的术语是否正确 但这里是 我有一个由多个线程使用的函数来写入数据 在注释中使用伪代码来说明我想要的内容 these are initiated in the constructor int data std atomic
  • 如何使用 SAX Java 解析器读取注释文本

    我只想使用 Java 中的 SAX 解析器读取 XML 文件中对象标记的注释 这是我的文件的摘要
  • 无法在 BlackBerry Playbook 上设置音量

    我在更改黑莓游戏书的音量时遇到问题 首先 我将 Android 应用程序重新打包到 Palybook 应用程序 我需要使用搜索栏更改黑莓剧本的音量 并在搜索监听器中设置音频管理器音量 这是代码 audioManager AudioManag

随机推荐

  • 创建覆盖 ImageView 动画 Google 地图

    我正在尝试使我的叠加图像执行以下操作 地图的 onClick onDrag 在地图中间显示恒定图像 这是一个引脚 onTouchUp 将标记图像更改为加载标记和一次数据 加载完整更改将图像加载到带有文本的新图像 这是与我的问题非常相似的解决
  • 如何让我的自定义帐户类型显示在 Android 联系人应用程序中?

    我已经创建了一个自定义帐户类型 并且可以在 android ContactsContract ContentProvider 中成功创建该类型的联系人 但我在弄清楚如何在默认联系人应用程序中编辑联系人时显示我的自定义帐户标签和图标时遇到了很
  • 为什么 git 将我的分支名称前缀大写?

    我有一组非常简单的 git 命令 这会导致一些奇怪的行为 显示我当前的本地分支机构 并查看我在release beta1 git branch develop master release beta1 创建一个bugfix somefeat
  • System.Net.WebRequest 不尊重主机文件

    有没有办法获得System Net WebRequest or System Net WebClient尊重hosts or lmhosts file 例如 在我的主机文件中 我有 10 0 0 1 www bing com 当我尝试在浏览
  • 使用 async/await 有什么优点?

    我正在阅读几篇文章并观看一些有关如何在 JavaScript 中使用 async await 的视频 似乎唯一的原因是将异步代码转换为同步代码 并使代码更具可读性 但这并不打算在这个问题中讨论 因此 我想了解使用这些语句是否有更多原因 因为
  • 如何使用 CKFinder Javascript API?

    有趣的问题 但老实说我无法访问 例如 CKFinder dataTypes Folder http docs cksource com ckfinder 2 x api symbols CKFinder dataTypes Folder h
  • 如果我们在管道中包含转换器,scikit-learn 的“cross_val_score”和“GridsearchCV”的 k 倍交叉验证分数是否有偏差?

    数据预处理器 例如 StandardScaler 应用于 fit transform 训练集 并且仅变换 不拟合 测试集 我希望相同的拟合 转换过程适用于用于调整模型的交叉验证 然而 我发现cross val score and GridS
  • 无法从 Telegram webHook ASP.NET 接收传入的 JSON

    所以问题是我为我的 Telegram 机器人设置了一个 webHook 地址 如下所示 https api telegram org bot
  • canActivate 在订阅更改时不响应 Angular 2 路由器 AngularFire2

    我正在使用 AngularFire2 这就是我的方法AuthGuard服务 canActivate route ActivatedRouteSnapshot state RouterStateSnapshot boolean this af
  • 如何向 angularjs uib-alert 指令添加动画

    我想为推送到数组中的新警报添加淡入动画 并为已消除的警报添加淡出动画 5 秒后警报将自动解除 我已经包含了angular animate ui bootstrap and ui bootstrap tpls图书馆 我怎样才能让这些动画工作
  • 将地图外的标记拖动到 html 元素

    有没有一种简单的方法可以将谷歌地图标记拖到地图区域之外到另一个 html dom 元素上 我已经尝试了很多事情 看起来唯一的方法是破解并在 jquery 中创建一个重复的标记 然后将其悬停在当前标记上 这样看起来您已将其拖离地图 欢迎任何建
  • 如何在 NgRx createAction props<>() 中使用通用类型

    我想创建一个 NgRx 动作创建器工厂 但我不知道如何将泛型类型传递给props method import createAction props from ngrx store function actionFactory
  • 如何使用正则表达式进行反向搜索?

    例如 我的字符串是 123456789 nn nn oo nn nn mlm nn203 我的目标是 nn 然后 我从末尾到开头匹配字符串 并返回第一个匹配结果及其位置 在这个例子中 结果是nn从 5 开始 以 3 结束 我写了一个简单的函
  • Lambda 参数应移出括号

    IntelliJ 给出了以下抱怨 Lambda 参数应移出括号 val profile loadProfiles profile sortedWith Comparator profile1 profile2 gt if profile1
  • 将附加参数传递给 post_save 信号

    我的 Django 应用程序中有一个用户注册表单 当用户尝试注册时 它会收集其他数据 例如地址 城市 国家 地区 电话号码等 该数据通过以下方式保存在 Account 模型类中post save信号 用户创建过程是这样的 Function
  • Git 克隆代替

    git克隆不支持insideOf吗 我尝试过 git v1 8 3 1 和 v2 16 5 我的 gitconfig 包含 url home USER pub insteadOf GITPUB 添加遥控器时替换效果很好 但克隆时则不然 gi
  • Python 多处理退出错误

    当我按 Ctrl C 退出我的应用程序时 我看到了这一点 Error in atexit run exitfuncs Traceback most recent call last File usr lib python2 6 atexit
  • 星级评定,实施 Wilson 评分区间

    class Rating public static function ratingAverage positive total power 0 05 if total 0 return 0 z Rating pnormaldist 1 p
  • DOS.h 中的 C/C++ REGS 联合不再可用。还有其他选择吗?

    我不得不使用大约二十年前编写的一个非常古老的库 除了使用 REGS 联合的部分之外 我几乎完全编译了它 从我所做的Google搜索来看 REGS是DOS h文件中中断处理的一部分 好吧 看看现代版本的 DOS h 我们看不到任何 REGS
  • Java 线程和同步块

    假设我正在执行一个synchronized某个线程内和内的代码块synchronized我调用一个方法 该方法生成另一个线程来处理需要与第一个方法相同的锁的同步代码块 所以在伪 Java 代码中 public void someMethod