【发布时间】:2015-04-24 22:33:25
【问题描述】:
我有 2 个线程,每个线程都有一个名为 threadLocal 的 Threadlocal 列表,它们都将生成子线程。我希望子线程能够修改父线程的本地线程。
我尝试将父级本身传递给子级,以便它可以调用 parent.threadLocal.get().add(x) 但这会导致空指针异常。当父调用 threadLocal.get().add(x) 时,它能够将 x 添加到列表中就好了。
我知道问题出在 .add(x) 上,因为让孩子调用 .get() 不会导致异常。我还尝试将 threadLocal 本身传递给孩子,这给出了同样的错误。
有没有办法做到这一点?
【问题讨论】:
-
如果你需要从多个线程访问变量线程本地化的目的是什么?
-
另一种可能性是从子线程调用父方法,该方法将修改其自己的 ThreadLocal 列表。
-
@Eranda 之所以需要是 Threadlocal 是因为有多个父母需要有自己的列表
-
@FelipeMartinsMelo 父线程没有方法,对象有方法。如果子线程调用一个方法,它会在该子线程上运行,而不是在父线程上运行,因此它将获取子线程的 ThreadLocal,而不是父线程的
标签: java multithreading thread-local