0
考慮線程同步方法下面的代碼和一個同步模塊線程與同步在java中
public class ThreadSynchronizationPartI {
public static int myValue=1;
public static void main(String [] args)
{
Thread t=new Thread(()->
{
while(true)
{
updateBalance();
}
});
t.start();
t=new Thread(()->{
while(true)
{
monitorBalance();
}
});
t.start();
}
public static synchronized void updateBalance(){
System.out.println("start "+myValue);
myValue = myValue + 1;
// myValue = myValue - 1;
System.out.println("end "+myValue);
}
public static synchronized void monitorBalance(){
int b=myValue;
if(b>1)
{
System.out.println("B is greater than 1 by"+(b-1));
System.exit(1);
}
}
}
爲什麼它確實給下面的輸出: 開始1 結束2 開始2 結束3 開始3 端4 開始4 端5 開始5 端6 開始6 端7開始 end 8 B大於1 by 7
任何人都可以解釋一下嗎?
因爲在結束打印聲明前,您已將1加入到我的價值 –
您期望發生什麼? updateBalance和monitorBalance會同時運行嗎?使用線程意味着他們*可以*,不一定他們會*。 – Neil
爲什麼codestops在8爲什麼不繼續? –