我有一个main方法是这样的:多线程Java中
A a = new A();
a.start();
B b = new B();
b.start();
B工作对a.start产生如此a.start(文件)必须完成first.However, a.start ()运行多线程作业,并在执行之前执行b.start()。
- 为什么启动a.start()的主线程在完成之前退出该方法?
- 确保b.start()在a.start()完成之前不会启动的好方法是什么?
谢谢!
我有一个main方法是这样的:多线程Java中
A a = new A();
a.start();
B b = new B();
b.start();
B工作对a.start产生如此a.start(文件)必须完成first.However, a.start ()运行多线程作业,并在执行之前执行b.start()。
谢谢!
看起来你并不需要在所有执行单独的线程这些任务,但如果你真的想你可以做这样的事情:
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并使用新线程(Runnable).start()。
更好的方法是使用Executor并让A和B实现Runnable(不扩展Thread)。像这样:
ExecutorService ex = Executors.newSingleThreadExecutor();
ex.execute(new A());
ex.execute(new B());
A和B现在将在一个单独的线程上按顺序执行。
+1想要多次投票。 ;) – 2011-01-20 11:49:52
谢谢! 由于文本最小长度的原因,需要写东西... – user431336 2011-01-21 08:38:19
不要直接使用线程,去上级java.util.concurrent库
它来,因为JVM决定执行哪个线程,你无法预测它。加入和并发utils是最好的方式,因为它已经在下面指出。 – 2011-01-20 11:23:18