假設我有兩個線程正在更新一個對象,並且有一個線程正在讀取該對象而沒有同步。顯然,這是運行條件。但是,我想知道變量本身是否只能部分寫入。java變量本身是否線程安全?何時更新變量?
public class CommonObject extends Object
{
static int memberVar=-1;
}
public class Input1Thread extends Thread
{
public void run()
{
while(true)
CommonObject.memberVar = 1
}
}
public class Input2Thread extends Thread
{
public void run()
{
while(true)
CommonObject.memberVar = 2;
}
}
public class OutputThread extends Thread
{
public void run()
{
while(true)
System.out.println("CommonObject.memberVar"+ CommonObject.memberVar);
}
}
我假設打印出也將是2或1。然而,我想知道是否有可能的是,變量可能被中途設置的值?
我使用原語作爲例子,但我想對象的答案也是如果它不同。
我覺得這個問題和答案都更好。他們也更專注於文字撕裂。 –