use*_*336 3 java multithreading
我有一个主要的方法,如:
A a = new A();
a.start();
B b = new B();
b.start();
Run Code Online (Sandbox Code Playgroud)
B处理a.start创建的文件,因此a.start()必须先完成.但是,a.start()运行一个多线程作业,在它完成之前执行b.start().
谢谢!
Ger*_*ies 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
Run Code Online (Sandbox Code Playgroud)
假设A和B是Thread的子类,不鼓励实现Runnable并使用新的Thread(Runnable).start().
更好的方法是使用Executor并让A和B实现Runnable(不扩展Thread).像这样:
ExecutorService ex = Executors.newSingleThreadExecutor();
ex.execute(new A());
ex.execute(new B());
Run Code Online (Sandbox Code Playgroud)
现在,A和B将在一个单独的线程上顺序执行.