很抱歉,如果这是一个常见问题,请找不到答案。
我想知道是否存在可用于集合的线程安全代理的泛化,那些使非同步集合同步的代理。
使用AspectJ,应该可以写:
class ThreadSafeProxy
{
public static <T> T getInstance ( T unsinchronizedObject )
}
将返回一个对象,其中unsinchronizedObject的所有公共方法都将被截获并包含在synchronize(unsinchronizedObject)中。如果没有AspectJ,应该可以写:
<T> T static synchronizeMethod ( Object unsynchObject, Class<T> returnType, String methodName, Object... params )
通过反思实现它。虽然这会更慢,也可能不那么实用。
提前感谢您的帮助。
答案 0 :(得分:2)
你当然可以这样做,但可能会遇到一些问题,例如:
答案 1 :(得分:-1)
我认为java.util.Collections synchronizedCollection方法就是你所需要的。