在项目中需要一个线程在一个线程池后所有线程执行完毕后进行调用,由于线程池的数量不定,所以CountDownLatch、CyclicBarrier和Semaphore都用不上,就只能从wait何notify入手。
单个线程:
public void onDealedDataPkgId(long l) {
if (l < 0) {
synchronized (mEndObject) {
while (!mEndObject.isTranslateEnd) {
try {
mEndObject.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
mEndObject.isTranslateEnd = true;
mHandler.post(new Runnable() {
@Override
public void run() {
mOutListener.onTranslateEnd();
}
});
}
}
}
}
线程池:
OnlineApi.postTranslator(fromLan, toLan, realText, new CommonCallBack() {
@Override
public void onSuccess(Call call, String result) {
...
if (end) {
synchronized (mEndObject) {
mEndObject.notifyAll();
}
...
}
} catch (Exception e) {
e.printStackTrace();
}
}