java - 如何检查代码是否在后台运行?

标签 java android multithreading debugging

在Java/Android中,有没有办法检查当前正在执行的代码行是否在后台线程上执行?

我想出了一个小程序,它终于达到了意大利面条式的阶段……这是故意的,你看,因为这样……如果竞争对手拿到了代码,并且他们“打开引擎盖”,看着它超过 20 秒后,他们的头发会着火,他们会尖叫着逃跑......但现在连我都感到困惑,我需要以某种方式检查这种情况。

图表-A:

// can be called from 1,067 places... some of which are background threads.
public void startDoingAFunDance(String caller, int wobbleIntensity, int spineAngle, int feetSeparationInInches) {

    if (!validCallersForFunDance.contains(caller)) { 
        Log.i("XXX", "Caller not allowed."); 
        return; 
    }

    boolean wasCalledFromBackgroundThread = // ? < what to put here > ?

    Log.i("XXX", "Was startDoingAFunDance() called from a background thread? And the answer is: " + wasCalledFromBackgroundThread);

    // classified

}

最佳答案

一个简单的方法可能是下面这样

boolean wasCalledFromBackgroundThread = (Thread.currentThread().getId() != 1);

后台线程没有 id 1(UI 线程有)。

关于java - 如何检查代码是否在后台运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51692158/

相关文章:

java - 在java 2d中绘制复杂的生成图像

java - Eclipse Tomcat 创建 3 个重复的 JNDI 连接池

Java 并发 - 发布不可变对象(immutable对象)(Java 并发实践)

android - 用于 Gson 的 POJO 是否可以重用于与 Room 一起使用的类

c - 当我们在 linux 中为进程及其线程设置不同的处理器关联时会发生什么?

java - 如何在两个线程之间共享变量

java - 多态性中的内存管理是怎样的?

java - 多个线程调用@Cacheable 方法。 Spring 缓存(3.2.6)允许所有线程进入方法

android - 如何解决 SocketException : Failed host lookup: 'www.xyz.com' (OS Error: No address associated with hostname, errno = 7)

android - ListView 不显示我的数据库中的文本