class A
{
public void func()
{
new Thread()
{
public void run()
{
// statements
}
} .start();
new Thread()
{
public void run()
{
// statements
}
} .start();
new Thread()
{
public void run()
{
// statements
}
} .start();
new Thread()
{
public void run()
{
// statements
}
} .start();
}
}
在这里,我尝试前两个线程(比如对A)并发运行,接下来的两个线程(比如对B)只有在对A完成执行后才能并发运行。
此外,如果有人可以解释是否可以通过 java.util.concurrent 或 threadgroup 来实现。我非常感谢任何帮助。
答案 0 :(得分:0)
您可以使用CountDownLatch
等待一定数量的线程调用countDown()
,此时主线程可以继续。你将不得不对你的线程进行一些改动 - 也就是说,你需要将它们传递给它们,当你完成它们的工作时你需要让它们调用latch.countDown()
,这样闩锁的计数就会最终达到0。
所以你的主要课程看起来像是:
final CountDownLatch latch = new CountDownLatch(2); // Making this final is important!
// start thread 1
// start thread 2
latch.await(); // Program will block here until countDown() is called twice
// start thread 3
// start thread 4
你的主题看起来像是:
new Thread() {
public void run() {
// do work
latch.countDown()
}
}
只有前两个线程完成后,锁存器才允许主线程继续并启动另外两个线程。
答案 1 :(得分:0)
public void func()
{
Thread a = new Thread()
{
public void run()
{
// statements
}
}
Thread b = new Thread()
{
public void run()
{
// statements
}
}
a.start();
b.start();
a.join(); //Wait for the threads to end();
b.join();
new Thread()
{
public void run()
{
// statements
}
} .start();
new Thread()
{
public void run()
{
// statements
}
} .start();
}