繁体   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