一个线程在它自己的构造函数中调用this.start()是否合法?如果是这样,这会导致什么样的潜在问题?我知道对象不会完全初始化,直到构造函数运行完成,但除此之外还有其他问题吗?
出于内存安全原因,您不应将对象或该对象的字段的引用从其构造函数中公开给另一个线程.假设您的自定义线程具有实例变量,通过从构造函数中启动它,您可以保证违反Java内存模型准则.有关详细信息,请参阅Brian Goetz的安全施工技术.