Javascript有Transferable Objects用于将对象传输给Web worker而不复制线程安全。不需要复制,因为一旦Web工作者拥有该应用程序,该应用程序就不再具有对该对象的引用。换句话说,引用由工作者或应用程序持有,但不能同时持有。 Java中是否有类似的机制?
答案 0 :(得分:2)
不,java根据定义没有Transferable对象,因为JVM中没有任何内容可以阻止两个引用值引用同一个实例。
但是,存在各种构造函数(参见Builder Pattern, Wikipedia),它们可以用来构造一个对象,然后用它构建一个不可变的实例,然后由于它的线程安全不可改变的。最着名的建筑师是StringBuilder
。我不知道java开箱即用的任何其他构建器,但我知道有许多库都有构建器,例如Guava (Wikipedia),请参阅ImmutableMap.Builder<K,V>
(Google guava documentation)。 子>