对于您遇到的问题,我需要您的意见或替代解决方案。我有以下代码:

ThreadA创建ThreadB并给B他的接口,以便ThreadB可以使用它。当ThreadB使用接口中的方法时,ThreadA可以处理结果。
这是处理沟通的正确方法吗?如果没有,那将是正确的吗?

public class ThreadA implements ThreadInterface {

    public ThreadA() {

        ThreadB b = new ThreadB((ThreadInterface) this);
        b.start();
    }

    @Override
    public void processFinished(int result) {
        // Do something with the result
    }

}


public interface ThreadInterface {

    void processFinished(int result);
}


public class ThreadB extends Thread {

    ThreadInterface ti;

    public ThreadB(ThreadInterface pTi) {
        ti = pTi;
    }

    @Override
    public void run() {
        int result = 0;

        // ... do things and save them into result
        ti.processFinished(result);
    }
}

最佳答案

在对象中调用方法与在该线程上运行代码不同。

要在两个线程之间进行通信,您应该使用某种消息传递算法。例如,一个BlockingQueue。

https://docs.oracle.com/javase/7/docs/api/java/util/concurrent/BlockingQueue.html

07-24 09:34