首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否可以读取由同一线程最后写入的值?

是否可以读取由同一线程最后写入的值?
EN

Stack Overflow用户
提问于 2021-06-24 21:41:46
回答 1查看 30关注 0票数 0

在Java中,是否可以确保变量的“read”将给出完全由同一线程写入该变量的值(在多个并发“write”操作的情况下)?

代码语言:javascript
复制
public class Client {
 private Config config;
 private RestClient client; 

 public void makeRequest() {
  client.post(config.getUrl(), requestEntity);
 }

 public void setConfig(Config config) {
  this.config = config; 
 }
}

我想确保‘config.getUrl()’会给我最后一个值( 'config‘object’的‘url’变量),这个值是同一线程在同一线程中‘config.getUrl()’之前写的(‘config.setUrl("someUrl")’发生在‘config.getUrl()之前)。

但是其他线程也有可能在同一时间调用config.setUrl("someOtherUrl")。

EN

回答 1

Stack Overflow用户

发布于 2021-06-24 21:46:04

使用ThreadLocal来存储特定于线程的值。

看一看ThreadLocals

例如,您可以像这样使用它们:

代码语言:javascript
复制
ThreadLocal<String> threadLocalValue = new ThreadLocal<>();
// Set the value of the url for this thread.
threadLocalValue.set("someUrl");
// Fetch the value again later like this.
String someUrl = threadLocalValue.get();

您存储在ThreadLocal中的值将仅对该特定线程可用。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68116940

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档