【发布时间】:2012-09-17 09:55:10
【问题描述】:
假设我有一个 ClassA,其职责是为外部使用提供线程安全的 API。并且某些 ClassA API 必须从另一个 ClassB 调用某些方法来完成某些逻辑(假设 ClassB 的方法是无状态且线程安全的)。但是,由于业务逻辑,ClassB 和 ClassA 不能合并为单个类。例如如下代码sn-p。有没有更好的方法来做到这一点?当然,我可以对 ClassA 使用更细粒度的并发控制,例如同步块、并发无锁数据结构。
谢谢!
public class ClassA{
public synchronized void method1(ClassB cb){
//do internal stuff1
cb.printAlog();
//do internal stuff2
}
public synchronized void method2(){
//do internal stuff3
}
......
}
public class ClassB{
public void printALog(){
//....
}
......
}
【问题讨论】:
-
如果
ClassB是无状态的,为什么不把它作为ClassA的字段注入呢?
标签: java multithreading encapsulation