【发布时间】:2015-12-22 09:00:08
【问题描述】:
在各种库中,某些操作必须发生在另一个操作发生在同一个线程上。一些示例包括 Swing EDT 和 OpenGL。
因此,当有人说“您只能在创建 ObjectY 的同一线程上调用 methodX()”或“在调用 methodY 之前,上下文必须首先与 threadX 关联”时......
幕后发生了什么?
它是如何执行的?
为什么会这样?例如为什么即使对象正在进行任何操作,我也不能从另一个线程发送命令?
【问题讨论】:
-
我猜线程 ID 保存在某个地方,并与当前正在执行的线程 ID 进行比较。如果它不匹配它会抛出一个异常,具有这个的代码可能不是线程安全的,所以它们只是在更糟糕的事情发生之前安全地中断你的程序。
-
我想这是合理的。我个人不是强制安全的粉丝,但最终这真的不是问题。如果你想回答我会接受。
-
我觉得回答的不好,我觉得应该有这方面经验的人来回答。
标签: language-agnostic thread-safety