簡體   English   中英

整數值不會每次都增加

[英]Integer value not increment every time

我聲明了一個 int 值,它試圖增加每次按鈕點擊,但有些時間值不增加,有些在 2 或 3 次點擊后增加工作。 我總是得到日志,所以點擊事件沒有問題,已經嘗試過沒有靜態但仍然無法正常工作。

public static int TotalScore = 0;

btnsubmit.setOnClickListener(new View.OnClickListener() 
{
            @Override
            public void onClick(View view) {
                initScoreSubmit();
            }
 });

public void initScoreSubmit()
{

        TotalScore++;
        txtTotalPoint.setText("Total Point: " +   String.valueOf(TotalScore));

        settings.set(AppSettings.Key.UserTotalPoint, TotalScore);

        Log.d(TAG, "Total_point "+TotalScore);
}

你能告訴我為什么不是靜態值或只有 int 不起作用。

因為 Java 內存模型。

如果一個線程寫入一個變量而另一個線程讀取該變量,則保證第二個線程看到第一個寫入的值的唯一方法是:

  • 將變量聲明為volatile
  • 同步兩個線程,或
  • 參考線程安全類替換裸變量; 例如一個AtomicInteger 變量應該是final

您需要閱讀 Oracle 並發教程,特別是有關同步的部分:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM