对于您遇到的问题,我需要您的意见或替代解决方案。我有以下代码:
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