Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/378.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 Thread.join不工作_Java_Android_Multithreading_Thread Synchronization - Fatal编程技术网

Java Thread.join不工作

Java Thread.join不工作,java,android,multithreading,thread-synchronization,Java,Android,Multithreading,Thread Synchronization,我想执行以下线程,并等待它们完成以继续工作,但是,这不是通过我的代码实现的,我不知道为什么,我认为join应该强制当前线程等待所有线程完成!。 如果有人能帮助我,我会很高兴的 这是我的密码: ArrayList<Thread> retrievalThreads=new ArrayList<Thread>(); retrievalThreads.add(new Thread(new Runnable() { @Override pu

我想执行以下线程,并等待它们完成以继续工作,但是,这不是通过我的代码实现的,我不知道为什么,我认为join应该强制当前线程等待所有线程完成!。 如果有人能帮助我,我会很高兴的

这是我的密码:

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");
ArrayList retrievalThreads=new ArrayList();
添加(新线程(newrunnable()){
@凌驾
公开募捐{
图片(假);
}
}));
添加(新线程(newrunnable()){
@凌驾
公开募捐{
GetNumVotes本周();
}
}));
添加(新线程(newrunnable()){
@凌驾
公开募捐{
getTotalVotes(真);
}
}));
添加(新线程(newrunnable()){
@凌驾
公开募捐{
getTotalMatches();
}
}));
添加(新线程(newrunnable()){
@凌驾
公开募捐{
getUserActivityLevel();
}
}));
添加(新线程(newrunnable()){
@凌驾
公开募捐{
getUserMatchMakerLevel();
}
}));
添加(新线程(newrunnable()){
@凌驾
公开募捐{
getLastBoostTimeStamp(true);
}
}));
添加(新线程(newrunnable()){
@凌驾
公开募捐{
getLastStealTimeStamp(真);
}
}));
添加(新线程(newrunnable()){
@凌驾
公开募捐{
getFacebookFriends();
}
}));
//开始以上所有线程

对于(inti=0;i
Thread.join()
将只等待创建截取reuqest的线程,而不是所有线程。截取将生成其他线程以异步发送请求。您需要。

是的,调用
join
将强制当前线程等待
retrievalThreads
中的所有线程。并且您发布的代码很好。您可以发布更多详细信息吗ils?在哪个方法之前完成“日志控制台”打印?在所有线程完成@user6690200之前完成打印,好像我没有调用join(),我理解。但是你发布的代码似乎还可以。你能发布更多详细信息吗?像什么样的详细信息?如何创建一个最小、完整且可验证的示例?