首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Java扩展RuntimeException字段的值是线程安全的吗?

Java扩展RuntimeException字段的值是线程安全的吗?
EN

Stack Overflow用户
提问于 2018-08-22 10:37:25
回答 1查看 136关注 0票数 0

帮我提个简单的问题。

这是我的一个简单的例外。

代码语言:javascript
复制
public class MyException extends RuntimeException {

private MyErrors error;

public MyException() {
}

public MyException(String message) {
    super(message);
}


public MyException(MyErrors error) {
    super(error.getMessage());
    this.error = error;
}

}

代码语言:javascript
复制
    public class MyService {

...

    public String someMethod(String id){
        Optional<Prizes> prize = Optional.ofNullable(prizesRepository.findById(id));

        if(prize.isPresent()){
            return prize.get().getPrize();
        }
        throw new MyException(ThanksGivenErrors.BadRequest);

    }
}

这是使用MyService的MyController

代码语言:javascript
复制
public class MyController{


...

@PostMapping("/prize")
public ResponseEntity findPrize(@RequestParam String id) {
    try {
        return new ResponseEntity<>(MyService.someMethod(id), HttpStatus.OK);
    } catch (MyException e) {
        return new ResponseEntity<>(e.getError().getMessage(), HttpStatus.BAD_REQUEST);
    }
}

}

MyService是一个Spring bean和单例。

我认为如果在多线程环境中使用MyService并且发生了许多MyException,那么MyException中的“error”字段的值可能会改变。

‘MyException(扩展RuntimeException)’的字段值是线程安全的吗?

我不认为这是安全的。感谢您的教学。

EN

回答 1

Stack Overflow用户

发布于 2018-08-27 04:55:31

RuntimeException从Throwable扩展而来,Throwable既不是线程安全的,也不是不可变的。它有一些改变状态的方法,比如:addSuppressed

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

https://stackoverflow.com/questions/51959160

复制
相关文章

相似问题

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