Javassist类可以与多个线程共享吗?

时间:2013-09-24 10:42:12

标签: java javassist

我可以在多个线程中共享Javassist类,以便在Web应用程序中获得更好的性能吗?我认为我可以为ConcurrentMap创建一个proxyClass的缓存,以避免在每个页面请求中创建。

我的代码是:

ProxyFactory factory = new ProxyFactory();
factory.setFilter(IGNORE_BRIDGE_AND_OBJECT_METHODS);
factory.setInterfaces(new Class[] { type });

Class<?> proxyClass = factory.createClass(); // can I cache here after class creation?

Object proxyInstance = ...; // objenesis creates new instance here
setHandler(proxyInstance, myCustomHandlerHere);

更新:我看到了Javassist代码,Javassist也提供了缓存。

1 个答案:

答案 0 :(得分:0)

当然可以。 Javassist编译的类是第一类类(即使只是很短的时间),因此最好在创建类之后对它们进行缓存,以节省自己重复编译它们的开销。此外,您不必为您的类创建不可能的名称,因为您只需重新编译相同的虚拟代码一次。