Thread som;
static class solver implements Runnable {
public void distancecalculator(char [][]problem , Point start ,
int distancefound) {
// Some code and condition to exit from program if satisfy
solver s = new solver(newproblem , neworigin,dist[a][b] );
som = new Thread(s);
som.start();
}
public void run(){
//som.sleep(1000);
//System.out.println("check");
distancecalculator(prom,movepoint ,disadd ); //Making a recursive call
}
我在每次递归调用时生成线程,我想以控制方式,即如果生成500个线程,则终止前100个线程。我怎样才能实现这一目标?如果我使用som.sleep
哪个线程将睡眠新生成的一个或旧的?
答案 0 :(得分:2)
sleep
是一种静态方法。它使调用线程休眠。更一般地说,没有直接的方法让另一个线程做任何事情,包括睡眠。您需要针对任何此类任务的特定线程间通信机制。
按照中断机制的规则结束线程(请参阅Thread#interrupt()
和Thread#isInterrupted()
的文档。
答案 1 :(得分:1)
使用ExecutorService并使用Executors.newFixedThreadPool(int)工厂方法创建n个线程的轮询。
在上面的链接中找到示例代码,并here。