Vil*_*tas 8 java exception thread-safety
据我所知,Java的Exception类肯定不是不可变的(类似的方法,initCause并setStackTrace提供一些线索).它至少是线程安全的吗?假设我的一个类有一个这样的字段:
private final Exception myException;
Run Code Online (Sandbox Code Playgroud)
我可以安全地将此字段暴露给多个线程吗?我不愿意讨论具体情况,以及为什么会出现这种情况.我的问题更多的是关于这个原则:我可以告诉一个暴露Exception类型字段的类是线程安全的吗?
另一个例子:
class CustomException extends Exception
{
...
}
Run Code Online (Sandbox Code Playgroud)
这个类是线程安全的吗?
请注意,它initCause()是synchronized并setStackTrace()复制其参数,然后执行单个分配.
所以Exception实际上似乎是在考虑线程安全的情况下实现的.尽管如此,我还是要警惕任何在线程之间经常传递异常的设计(即除了处理非常严重的错误条件之外的任何原因).这只是感觉不对.
| 归档时间: |
|
| 查看次数: |
1281 次 |
| 最近记录: |