java - 如何检查线程内主线程的变量?

标签 java multithreading

我有一个正在运行的线程:

public boolean shouldStopThread = false;

        new Thread(new Runnable() {
          @Override
          public void run() {
              try {

                   if(!shouldStopThread )
                     {
                      // Do my stop here
                     }
              } catch (InterruptedException e) {
                  e.printStackTrace();
              }
          }
      }).start();

问题是当我将 boolean 值从 false 更改为 true 时,线程内未检测到更改。

如何获取线程内的 boolean 值来检测更改?

最佳答案

因为你的 boolean 值不是 volatile ,不保证在所有线程中立即更改。

如果将其声明为 volatile ,则可以保证每次更改该值时,所有线程都可以看到它。

关于java - 如何检查线程内主线程的变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44300944/

相关文章:

c++ - 仅在多核上运行时出现段错误

c++ - 如何避免 Helgrind 的误报?

java - 更新由 Spring 注入(inject)的属性文件以包含上次运行时间戳

java - 文件存在,无法读取以标准方式给出的路径,相同的字符串不匹配 - Groovy

java - 为什么当从 SVN checkout Ant version 1.3 时,Ant java 项目本身有很多错误?

java - BouncycaSTLe 在标题中添加注释

java - 简单的 Java Swing 动画滞后

java - 当作业到达 threadPoolExecution 时调用所有线程

mysql - Mysql INSERT 操作如何针对可能的重复条目进行优化?

multithreading - 如何将 google_gmail1::Gmail<HttpsConnector<HttpConnector>> 传递给线程生成?