根据theJavaLanguageSpecification,构造函数不能被标记为同步,因为其他线程在创建它的线程完成之前无法看到正在创建的对象。这似乎有点奇怪,因为我确实可以让另一个线程在构建对象时查看它:publicclassTest{publicTest(){finalTestme=this;newThread(){@Overridepublicvoidrun(){//...Reference'me,'theobjectbeingconstructed}}.start();}}我知道这是一个非常人为的例子,但从理论上讲,似乎有人可以提出一个更现实的案例,将构造函数标记为同步是合法
根据theJavaLanguageSpecification,构造函数不能被标记为同步,因为其他线程在创建它的线程完成之前无法看到正在创建的对象。这似乎有点奇怪,因为我确实可以让另一个线程在构建对象时查看它:publicclassTest{publicTest(){finalTestme=this;newThread(){@Overridepublicvoidrun(){//...Reference'me,'theobjectbeingconstructed}}.start();}}我知道这是一个非常人为的例子,但从理论上讲,似乎有人可以提出一个更现实的案例,将构造函数标记为同步是合法