我想执行以下线程,并等待它们完成以继续工作,但是,这不是通过我的代码实现的,我不知道为什么,我想连接应该强制当前线程等待为所有线程完成! 如果有人能帮助我,我会很高兴的!
这是我的代码:
ArrayList<Thread> retrievalThreads=new ArrayList<Thread>();
retrievalThreads.add(new Thread(new Runnable() {
@Override
public void run() {
getProfilePictures(false);
}
}));
retrievalThreads.add(new Thread(new Runnable() {
@Override
public void run() {
getNumVotesThisWeek();
}
}));
retrievalThreads.add( new Thread(new Runnable() {
@Override
public void run() {
getTotalVotes(true);
}
}));
retrievalThreads.add(new Thread(new Runnable() {
@Override
public void run() {
getTotalMatches();
}
}));
retrievalThreads.add(new Thread(new Runnable() {
@Override
public void run() {
getUserActivityLevel();
}
}));
retrievalThreads.add(new Thread(new Runnable() {
@Override
public void run() {
getUserMatchMakerLevel();
}
}));
retrievalThreads.add(new Thread(new Runnable() {
@Override
public void run() {
getLastBoostTimeStamp(true);
}
}));
retrievalThreads.add(new Thread(new Runnable() {
@Override
public void run() {
getLastStealTimeStamp(true);
}
}));
retrievalThreads.add(new Thread(new Runnable() {
@Override
public void run() {
getFacebookFriends();
}
}));
//Start all above threads
for (int i=0;i<retrievalThreads.size();i++)
retrievalThreads.get(i).start();
//Wait for them to finish
for (int i=0;i<retrievalThreads.size();i++){
try {
retrievalThreads.get(i).join();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
Log.i("Finished","TheAbove");
日志控制台中的打印在线程完成执行之前完成!
答案 0 :(得分:1)
Thread.join()
将只等待创建volley reuqest的线程,而不是所有线程。 Volley将产生其他线程以异步方式发送请求。您需要synchronous volley requests。