Android 如何在第二个线程启动后启动第一个线程完成

Android 如何在第二个线程启动后启动第一个线程完成,android,multithreading,thread-safety,Android,Multithreading,Thread Safety,我使用一些方法我需要一些方法来完成开始另一个方法,所以我使用线程函数,如何启动一个线程,然后再启动第二个线程 Thread thread1 = new Thread(new Runnable() { @Override public void run() { try { loadIrrigationSourceMaster(); loadIrrigationMaster();

我使用一些方法我需要一些方法来完成开始另一个方法,所以我使用线程函数,如何启动一个线程,然后再启动第二个线程

Thread thread1 = new Thread(new Runnable() {
        @Override
        public void run() {
            try {

                loadIrrigationSourceMaster();
                loadIrrigationMaster();
                loadSeasonMaster();
                loadFactoryMaseter();


            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    });
    thread1.start();

    Thread thread2 = new Thread(new Runnable() {
        @Override
        public void run() {
            try {
                loadTransport();
                plantTypeMaster();
                plotOwnerTypeMaster();
                ExitRatoonMaster();

            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    });
    thread2.start();
超出上述范围:

tag:1
tag:2
但我认为这不是一个好主意。只需将剩下的工作放在第一个
线程中

超出上述范围:

tag:1
tag:2

但我认为这不是一个好主意。只需将剩余的作业放在第一个
线程中
要等待线程完成其执行,然后再继续,可以使用
join()
方法:

特别是针对您的问题,您可以将
thread1.join()
,放在
thread1.start()调用之后。join调用将阻止调用线程,直到
thread1
的执行完成,这样
thread2
将在
thread1
完成后初始化并执行


或者,您也可以在
thread2
run()
方法的开头调用
thread1.join()
,这样主线程就不需要被
join()
调用阻塞。

要等待线程在继续之前完成其执行,您可以使用
join()
方法:

特别是针对您的问题,您可以将
thread1.join()
,放在
thread1.start()调用之后。join调用将阻止调用线程,直到
thread1
的执行完成,这样
thread2
将在
thread1
完成后初始化并执行


或者,您也可以在
thread2
run()
方法的开头调用
thread1.join()
,这样主线程就不需要被
join()
调用阻塞。

但它同时调用所有方法,我需要在启动另一个方法后完成,它将在第二个线程上运行方法/代码。然后它将进入第二个线程
start()
方法来运行它。我编辑了答案。您在第一个线程的那些方法中使用过任何
thread
?。如果是,那么这就是为什么它在完成作业之前跳转到第二个线程的原因。输出ok,但单击按钮同时输出调用所有方法。需要首先将complete all方法标记到另一个标记将启动。第一个线程基于另一个方法调用some for循环条件,以便我使用first thread complete从第二个线程启动,但它同时调用all the方法,我需要在启动另一个方法后完成,它将在第二个线程上运行方法/代码。然后它将进入第二个线程
start()
方法来运行它。我编辑了答案。您在第一个线程的那些方法中使用过任何
thread
?。如果是,那么这就是为什么它在完成作业之前跳转到第二个线程的原因。输出ok,但单击按钮同时输出调用所有方法。需要首先标记完成另一个标记的所有方法。第一个线程将根据另一个方法调用some for循环条件,以便我使用第一个线程完成以第二个线程方式开始。?你能编辑代码吗?请简要解释一下。?你能编辑代码吗?请简要解释一下