在 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/