Mat*_*att 5 java thread-safety java.lang.class
我正在尝试应用阅读Java Concurrency In Practice中的经验教训,以声明我编写的类是线程安全的还是包含非同步的可变状态.我认为这是一个好主意,因为它记录了如何使用类的意图.
今天,我编写了一个包装java.lang.Class和java.net.URI实例的类.我正准备在javadoc中写入它是线程安全不可变的,因为这两个字段都被声明为最终引用.但是,我查看了URI和Class的源代码,并没有看到它们是否是线程安全的任何声明,并且它似乎并不是很明显.
更普遍地考虑这个问题:是否有一个常见的java类列表,说明它们是否是线程安全的?
另一方面,由于这个类的使用方式,实例是否严格是线程安全的并不重要,我现在将它标记为"可能是线程安全的".
Java中没有明确的线程安全类列表.唯一可以产生确定列表的人就是Oracle 1,他们还没有这样做.
1 - Oracle是参考Java类库(包括javadocs),其他"官方"文档和Java官方合规性测试套件的保管人.他们会说一个线程安全的类(或类的子集)是否是设计线程安全的,或者它是否仅仅是一个实现工件.没有其他人可以完全确定地完成那个游戏; 即,在标准Oracle代码库中是否是线程安全的类在Harvest/Android代码库或Classpath代码库中是否也应该是线程安全的,或者......
小智 5
所有java.lang类(如Marko所说,不可变类被认为是线程安全的).还有BigDecimal和BigInteger等等.不幸的是,没有该类的列表.
如果您需要一些线程安全的集合,请尝试使用Google Guava不可变集合(http://code.google.com/p/guava-libraries/wiki/GuavaExplained?tm=6)
| 归档时间: |
|
| 查看次数: |
1966 次 |
| 最近记录: |