如何在Java中挂起内线程?

如何在Java中挂起内线程?,java,multithreading,methods,Java,Multithreading,Methods,我有一个组件,在其中打开一个线程来创建会话, 我不能进去或改变里面的任何东西。 我需要找到一种方法暂停工作,直到内螺纹完成。 (无法检查会话是否已创建,因此无法创建循环以等待!会话) 公共课堂议程{ 工作=新工作(); 公开作废go(){ 工作。开始(); } } 公共课工作延伸了思路{ @凌驾 公开募捐{ 对于(int i=0;i将work.start()更改为work.run(),因为您首先不需要使用后台线程。您的意思是要等到创建的线程完成后再运行吗?然后您的主程序可以执行下一个程序?不幸的

我有一个组件,在其中打开一个线程来创建会话, 我不能进去或改变里面的任何东西。 我需要找到一种方法暂停工作,直到内螺纹完成。 (无法检查会话是否已创建,因此无法创建循环以等待!会话)

公共课堂议程{
工作=新工作();
公开作废go(){
工作。开始();
}
}
公共课工作延伸了思路{
@凌驾
公开募捐{

对于(int i=0;i将
work.start()
更改为
work.run()
,因为您首先不需要使用后台线程。您的意思是要等到创建的线程完成后再运行吗?然后您的主程序可以执行下一个程序?不幸的是,如果您无法更改“内部”线程线程已创建,您无法执行太多操作。一个选项可能在启动内部线程后对其调用“join”。另一个选项可能从“外部”线程调用“wait”,从“内部”线程调用“notify”线程在同一个监视器对象上。但据我所知,在您的情况下,没有一个是可行的选择。这正是问题所在,我无法更改这些组件中的任何内容,主要是外部操作。
public class Agenda {
Work work=new Work();
    public void go(){
        work.start();
    }

}
public class Work extends Thread {


    @Override
    public void run() {
    for(int i=0; i<10;++i)
        System.out.print("!->!");
    System.out.println("\n");   
    super.run();
    }
}

public class Main {

    public static void main(String[] args) {

        System.out.println("Hello SmartHead!!");
        Agenda agenda=new Agenda();
        agenda.go();
        //synchronized (work) {

        synchronized (agenda) {


        System.out.println("Finished !!! ");
    }

    }
    }