Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/194.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android后台线程通信_Java_Android_Multithreading_Android Handler - Fatal编程技术网

Java Android后台线程通信

Java Android后台线程通信,java,android,multithreading,android-handler,Java,Android,Multithreading,Android Handler,我想从主线程创建两个可以相互通信的线程(T1和T2)。我正在寻找实现这一目标的最佳方法。 我的想法是与处理程序一起执行此操作。这样行吗? 问题是我不知道T1如何获得T2的处理程序引用,反之亦然 编辑 让我更详细地解释一下情况。如果T1中发生了某种情况,我想把它发送给T2,这样T2可以做其他的工作 您可以这样做: public class Test { static abstract class MyThread extends Thread implements Callback{

我想从主线程创建两个可以相互通信的线程(T1和T2)。我正在寻找实现这一目标的最佳方法。 我的想法是与处理程序一起执行此操作。这样行吗? 问题是我不知道T1如何获得T2的处理程序引用,反之亦然

编辑


让我更详细地解释一下情况。如果T1中发生了某种情况,我想把它发送给T2,这样T2可以做其他的工作

您可以这样做:

public class Test {

    static abstract class MyThread extends Thread implements Callback{
        Callback mCallback;
        public void setCallBack(Callback pCallBack){
            mCallback = pCallBack;
        }

    }

    static interface Callback{
        public void onAction(Object... args);
    }

    public static void main(String args[]){
        MyThread T1 = new MyThread(){

            @Override
            public void onAction(Object... args) {
                //code when onAction is called.

            }

            public void run(){
                //T1 thread code here

                //if some condition
                //call the Callback
                mCallback.onAction();
            }

        };

        MyThread T2 = new MyThread(){
            @Override
            public void onAction(Object... args) {
                //code when onAction is called.
                //"Other work"
            }

            public void run(){
                //T2 thread code here

            }

        };

        T1.setCallBack(T2);
        T2.setCallBack(T1);

        T1.start();
        T2.start();
    }
}
如果他们有血缘关系(亲子关系),这应该不是什么问题,如果不是的话,你需要提供一个共同的场所,让他们可以注册,从而实现他们之间的沟通