我有一个主要方法,例如:
A a = new A();
a.start();
B b = new B();
b.start();
B处理a.start创建的文件,因此a.start()必须先完成。但是, a.start()运行一个多线程作业,在它完成之前执行b.start()。
谢谢!
答案 0 :(得分:13)
看起来你根本不需要在单独的线程中执行这些任务,但如果你真的想要,你可以这样做:
A a = new A();
a.start();
a.join(); // Will wait until thread A is done
B b = new B();
b.start();
b.join(); // Will wait until thread B is done
假设A和B是Thread的子类,不鼓励实现Runnable并使用新的Thread(Runnable).start()。
更好的方法是使用Executor并让A和B实现Runnable(不扩展Thread)。像这样:
ExecutorService ex = Executors.newSingleThreadExecutor();
ex.execute(new A());
ex.execute(new B());
A和B现在将在一个单独的线程上顺序执行。
答案 1 :(得分:1)
不要直接使用线程,请选择更高级别的java.util.concurrent库