【发布时间】:2015-03-10 07:30:51
【问题描述】:
我在 oracle.com 上阅读了有关内部类的教程: http://docs.oracle.com/javase/tutorial/java/javaOO/nested.html
本教程包含简单示例:
class OuterClass {
...
class InnerClass {
...
}
}
这样的实例化:
OuterClass.InnerClass innerObject = outerObject.new InnerClass();
我的问题是我是否有外部类的最终实例:
public class OuterClass {
private static final OuterClass outerObject = new OuterClass();
class InnerClass{
//... some fields, methods here
}
public static void functn(){
InnerClass innerObject = outerObject.new InnerClass();
//... use the inner object...
}
}
那么我可以安全地同时在 2 个线程中进行实例化吗? (在 2 个线程中调用 functn())
【问题讨论】:
-
您的问题不清楚(例如,该行可能是一个局部变量,根据定义,它是线程安全的)-您能展示一个完整的示例吗?
-
这取决于“...”中的内容
-
@assylias 示例已添加。
-
@StephenC 如果内部类只包含一些字段,普通的getter和setter,而静态方法只是在内部对象中设置一些值,那完全没有问题,对吧?
-
@Griddoor - 字段是否已初始化?有构造函数吗?
标签: java multithreading thread-safety instantiation inner-classes