Mir*_*cek 5 java multithreading
关于为什么Java构造函数不能同步的后续问题?:如果对象的构造函数无法同步,这是否意味着无法在字面上同时创建两个实例?例如:
public class OutgoingMessage {
public OutgoingMessage() {
this.creationTime = new Date();
}
Date creationTime;
}
Run Code Online (Sandbox Code Playgroud)
将creationDate.getTime()始终返回不同的值?我知道多任务/多线程的基础知识但是多CPU核心呢?在这种情况下,操作系统不必切换上下文,或者我错了吗?
如果对象的构造函数无法同步,这是否意味着无法在字面上同时创建两个实例?
否.作为另一个问题状态的答案,构造函数无法简单,因为在调用构造函数之前没有任何内容可以同步.你可以这样做:
public OutgoingMessage(){
synchronized(this){
//synchronized constructor
}
}
Run Code Online (Sandbox Code Playgroud)
但问题就变成了:两个线程如何同时访问同一个实例的同一构造函数?根据构造函数的工作原理,他们无法做到.这就是为什么你不能在构造函数上同步 - 因为它没有任何意义.
这并不是说两个类的实例不能同时构建.
| 归档时间: |
|
| 查看次数: |
843 次 |
| 最近记录: |