我有以下这段代码。
第二行代码(赋值语句)会在JVM中重新创建初始对象吗?我问这个问题是因为我正在使用一个Boolean对象来同步多个线程,如果发生重新初始化,我担心等待的线程将看不到值的改变。
在我的应用程序中,有多个线程都被给予了对先前Boolean对象的引用。只有一个线程将对象的值更改为true,其余线程则等待直到对象的值变为true。因此,如果T1是更改值的线程,其代码如下:
因此,问题是在将true分配给flag后,其他线程(T2)是否仍然可以访问原始对象?
谢谢, Nick
Boolean flag = new Boolean(false);
flag = true;
第二行代码(赋值语句)会在JVM中重新创建初始对象吗?我问这个问题是因为我正在使用一个Boolean对象来同步多个线程,如果发生重新初始化,我担心等待的线程将看不到值的改变。
在我的应用程序中,有多个线程都被给予了对先前Boolean对象的引用。只有一个线程将对象的值更改为true,其余线程则等待直到对象的值变为true。因此,如果T1是更改值的线程,其代码如下:
synchronized(flag) {
flag = true;
flag.notifyAll();
}
其余的线程(T2)将有如下代码:
synchronized(flag) {
while(flag == false)
wait();
if(flag == true) {
//do something
}
}
因此,问题是在将true分配给flag后,其他线程(T2)是否仍然可以访问原始对象?
谢谢, Nick
Boolean.TRUE
或Boolean.FALSE
,具体取决于字面量。 - Sotirios Delimanolisboolean
转换为Boolean
- Sotirios Delimanolis