问题标签 [thread-confinement]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
26 回答
353318 浏览

java - 我应该何时以及如何使用 ThreadLocal 变量?

什么时候应该使用ThreadLocal变量?

它是如何使用的?

0 投票
8 回答
11592 浏览

java - 线程限制

我正在阅读实践中的 Java 并发,有点与线程限制概念混淆。书上说

当一个对象被限制在一个线程中时,这种用法自动是线程安全的,即使被限制的对象本身不是

那么当一个对象被限制在一个线程中时,没有其他线程可以访问它吗?这就是被限制在一个线程中的意思吗?如何将对象限制在线程中?

编辑: 但是如果我仍然想与另一个线程共享对象怎么办?假设线程 A 处理完对象 O 后,线程 B 想访问 O。在这种情况下,在 A 处理完 O 之后,O 是否仍被限制在 B 中?

使用局部变量肯定是一个例子,但这仅意味着您不与其他线程共享您的对象(完全)。在 JDBC 连接池的情况下,一旦线程完成了该连接,它是否不会将一个连接从一个线程传递到另一个线程(完全不知道这一点,因为我从未使用过 JDBC)。

0 投票
1 回答
76 浏览

swift - 有没有一种优雅的方式将一个类限制在一个线程中?

我有一个类,我想将其限制在一个线程中。准确地说,我希望在类私下创建的某个线程或串行队列上访问它的 void 返回方法。为了实现这一点,我将NSManagedObjectContextAPI 视为参考。有一种perform(block:() -> Void)方法可以做到这一点。

这带有一个我有点不舒服的代码模式。此 API 的用户需要调用perform(block:() -> Void)方法块中的对象。有没有更优雅的解决方案,我可以声明所有方法和属性都局限于这个特定的线程。所以基本上用户可以访问这些方法,但内部操作发生在预期的线程上。

我知道我可以转到每个方法并将该方法的工作分派到预期线程中的选项。但这是编写调度代码的额外开销。