Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java中的线程局部变量与局部变量_Java_Multithreading - Fatal编程技术网

Java中的线程局部变量与局部变量

Java中的线程局部变量与局部变量,java,multithreading,Java,Multithreading,我们不能使用线程安全的局部变量而不是线程局部变量吗。 以及使用ThreadLocal的位置。请引用一些实际应用的例子 线程局部变量在不同的线程中具有不同的实例。这允许每个线程拥有自己的变量视图,该视图独立于其他线程看到的内容。“普通”局部变量是单个实例,当以线程安全方式访问时,所有线程中的值都相同。线程局部变量在不同线程中具有不同的实例。这允许每个线程拥有自己的变量视图,该视图独立于其他线程看到的内容。“Plain”局部变量是单个实例,当以线程安全的方式访问时,所有线程中的值都相同。一个典型的例

我们不能使用线程安全的局部变量而不是线程局部变量吗。
以及使用ThreadLocal的位置。请引用一些实际应用的例子

线程局部变量在不同的线程中具有不同的实例。这允许每个线程拥有自己的变量视图,该视图独立于其他线程看到的内容。“普通”局部变量是单个实例,当以线程安全方式访问时,所有线程中的值都相同。

线程局部变量在不同线程中具有不同的实例。这允许每个线程拥有自己的变量视图,该视图独立于其他线程看到的内容。“Plain”局部变量是单个实例,当以线程安全的方式访问时,所有线程中的值都相同。

一个典型的例子是
SimpleDateFormat
,它不是线程安全的。在多线程环境中,除其他外,有两个线程安全选项:

private static ThreadLocal<SimpleDateFormat> fmtHolder = new ThreadLocal<SimpleDateFormat>() {
  @Override protected SimpleDateFormat initialValue() {
    return new SimpleDateFormat("dd/MM/yyyy");
  }
};

private void method() {
  SimpleDateFormat fmt = fmtHolder.get();
}

前者效率更高,而后者更易于阅读和推理。

一个典型的例子是
SimpleDateFormat
,它不是线程安全的。在多线程环境中,除其他外,有两个线程安全选项:

private static ThreadLocal<SimpleDateFormat> fmtHolder = new ThreadLocal<SimpleDateFormat>() {
  @Override protected SimpleDateFormat initialValue() {
    return new SimpleDateFormat("dd/MM/yyyy");
  }
};

private void method() {
  SimpleDateFormat fmt = fmtHolder.get();
}

前者效率更高,而后者更易于阅读和推理。

局部变量只能在声明它的函数或块中使用,并且当函数返回或块退出时它就不再存在


当您需要静态数据,但希望每个线程都有自己的副本时,可以使用
ThreadLocal
对象,该对象通常从
static
变量或singleton对象的实例变量引用。

局部变量只能在声明它的函数或块中使用,当函数返回或块退出时,它就不再存在


当您需要静态数据,但希望每个线程都有自己的副本时,您可以使用
ThreadLocal
对象,通常从
static
变量或单例对象的实例变量引用该对象。

与其发布一些随机示例,不如发布您的示例?有时您可能可以。但是它们不是同一件事,所以这取决于你在具体案例中需要的行为。与其我们发布一些随机的例子,不如你发布你的例子?有时候你可能会。但是它们不是同一件事,所以这取决于您在特定情况下需要的行为。