标签: thread-local

有没有办法迭代或复制Java ThreadLocal的所有值?

语境:

static ThreadLocal<MyType> threadLocalMyType = ...
Run Code Online (Sandbox Code Playgroud)

我想要的是说:

for (ThreadLocalEntry e: threadLocalMyType.getMapLikeThing() {
    // Thread t = e.getKey(); 
    // I don't need the thread value right now, but it might be useful for 
    // something else. 

    MyType theMyType = e.getValue();
    // [...do something with theMyType...]
}
Run Code Online (Sandbox Code Playgroud)

java multithreading thread-local

4
推荐指数
1
解决办法
2767
查看次数

如何/存储程序的工作目录?

当程序访问文件,使用system()等时,该程序的当前工作目录的物理知识/存储方式和位置是什么?从逻辑上讲,程序的工作目录类似于全局变量,理想情况下它应该是线程本地的,特别是在像D这样的语言中,默认情况下"全局"变量是线程局部的.是否可以使程序的当前工作目录成为本地线程?

注意:如果您不熟悉D,即使是与语言无关的答案也会有用.

filesystems multithreading operating-system d thread-local

4
推荐指数
2
解决办法
614
查看次数

线程局部线程是否安全?

具体来说,我在谈论Python.我试图通过查看对象的值而不传入它来破解某些东西(只是一点点),并且我想知道使用本地线程来执行该操作是否是线程安全的.另外,你甚至怎么做这样的事情?

python multithreading thread-safety thread-local

4
推荐指数
1
解决办法
672
查看次数

"此目标不支持线程本地存储",适合#ifdef?

由于每个编译器都有自己的线程本地存储版本,因此我最终为它创建了一个宏.现在唯一的问题是GCC(关闭了pthreads),它给了我:

"此目标不支持线程本地存储"

很公平,因为在这种情况下实际上关闭了pthreads.问题是,是否存在使用某些宏检测此问题的通用方法,例如#ifdef __GCC_XXX_NO_THREADS_XXX?

编辑:请参阅下面接受的答案.另外,这是我的懒惰解决方案:


$ touch test.c
$ gcc -E -dM test.c > out.1
$ gcc -pthread -E -dM test.c > out.2
$ diff out.*
28a29
> #define _REENTRANT 1
Run Code Online (Sandbox Code Playgroud)

这是在Mac OS X上.我不确定它是否可移植或任何东西......

c++ portability gcc thread-local

4
推荐指数
1
解决办法
5432
查看次数

request.getSession()vs getThreadLocalRequest().getSession()

有什么区别

request.getSession() 
Run Code Online (Sandbox Code Playgroud)

getThreadLocalRequest().getSession()
Run Code Online (Sandbox Code Playgroud)

我维护的应用程序似乎使用第一个用于直接Servlets,第二个用于通过GWT-RPC实现的任何东西,GWT-RPC本身扩展了servlet.

java session servlets thread-local

4
推荐指数
1
解决办法
6486
查看次数

有没有办法使用GCC的__thread完全模拟thread_local?

C++ 11标准包含一个新的附加 - thread_local说明符 - 它使静态变量成为线程局部的.标准的thread_local支持非平凡类型 - 具有构造函数和析构函数的类型.不幸的是,GCC仅通过__thread作为扩展名提供的说明符来支持普通类型.有没有一种方法可以效仿thread_local之上__thread?实现__thread非常快(相当于常规变量加上两个间接),所以我想避免热路径中的库函数.

我正在使用GCC和Linux.不需要携带.

c++ gcc thread-local c++11

4
推荐指数
1
解决办法
1461
查看次数

ThreadLocal与克隆

我一直在阅读有关threadlocal和有用的场景.我喜欢这个概念,但想知道它与克隆有什么不同?

因此,threadlocal将返回变量的新副本,这意味着我们不必使用同步.一个很好的例子是SimpleDateFormat对象,它不是线程安全的,而ThreadLocal提供了一种很好的使用方法.但为什么我们不能简单地创建一个新的varibale使用克隆副本?

与克隆相比,ThreadLocal类提供的增值是多少?

java multithreading thread-local

4
推荐指数
2
解决办法
1172
查看次数

tomcat的ThreadLocalLeakPreventionListener到底做了什么?

org.apache.catalina.core.ThreadLocalLeakPreventionListener的文档说"LifecycleListener在停止Context时触发Executor池中线程的更新,以避免线程本地相关的内存泄漏."

它是如何完全阻止ThreadLocal内存泄漏的?它是否在上下文停止时显式调用ThreadLocal的remove()方法?

据我所知,ThreadLocal是作为哈希映射实现的.映射键是对ThreadLocal实例本身的引用.映射值是线程本地值.

java thread-local thread-local-storage

4
推荐指数
1
解决办法
2465
查看次数

Pharo Smalltalk中的ThreadLocal

在Pharo中是否存在Java的ThreadLocals,或者实现类似行为的方法?例如,在Hibernate中,ThreadLocals用于通过单个getCurrentSession方法调用提供一个线程(当前请求/上下文)"作用域"统一工作实例 - 在Hibernate上命名为Session.开发人员不必担心,只需相信该方法将返回正确的工作单元.Pharo有可能吗?

我在Pharo Books(Pharo示例,Pharo企业和Deep Pharo)以及此页面中浏览了这个,但找不到有用的信息.

multithreading smalltalk thread-local pharo

4
推荐指数
1
解决办法
567
查看次数

如果线程本地映射包含对threadlocal对象的弱引用,那么为什么它不是垃圾回收?

我有一个threadlocal对象,它使用非静态内部类的对象初始化,如下所示:

public class StressTestThreadLocal {

  private final ThreadLocal<TObject> tObjectThreadLocal = ThreadLocal.withInitial(
      () -> new TObject(1000));

  private static ExecutorService executorService = Executors.newFixedThreadPool(4);

  private void startThread() {
    executorService.submit(tObjectThreadLocal::get);
  }

  public class TObject {
    List<Integer> test;

    TObject(int n) {
      test = new ArrayList<>();
      for (int i = 0; i < n; i++) {
        test.add(i);
      }
      System.out.println("Done making TObject " + UUID.randomUUID());
    }
  }

  public static void main(String[] args) {
    for (int i = 0; i < 100000; i++) {
      StressTestThreadLocal testThreadLocal = new …
Run Code Online (Sandbox Code Playgroud)

java garbage-collection thread-local

4
推荐指数
1
解决办法
660
查看次数