java - 在自定义线程中创建的对象在主线程上运行

标签 java android multithreading

在 Android 上,我有一个扩展 Thread 的类 MyThread。在 MyThread 中,我声明了一些对象并在 run() 方法中初始化它们。对象是具有自己的构造函数的自定义类的实例。其中一些触发另一个后台线程并接受也在 MyThread 的 run() 方法内初始化的监听器对象。我的问题是,这些监听器是在主线程而不是 MyThread 上执行的。

所以我的问题是:在自定义线程上实例化的自定义对象的方法是在哪个线程上执行的?

最佳答案

在哪个线程上创建对象并不重要,重要的是从哪个线程调用对象上的方法。

例如:

class MyThread extends Thread {

    public MyObject myObject;

    @Override
    public void run() {
        myObject = new MyObject();

        /* Do stuff */
    }

}

使用此类:

MyThread myThread = new MyThread();
myThread.start();
myThread.myObject.someMethod();

这里,someMethod 调用是在主线程上完成的。

关于java - 在自定义线程中创建的对象在主线程上运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25047083/

相关文章:

java - Android Studio 设置 JDK 错误

Android put 和 get parcelable array 报错

android - XML 中的“图像上缺少 contentDescription 属性”

java - java中如何使用线程ID获取线程运行时间?

java - 将 Bootstrap css 文件包含到 spring 元素 jsp 文件中

java - 在运行时更改 Maven 插件配置

android - 在 DatePicker 中设置自定义日期

java - 为 Unsafe.putOrdered*() 的发布实现获取?

c++ - 影响帧率的 allegro 5 线程

java - 在 java 中保存和检索数据的快速、安全的方法