在java中退出一个线程

时间:2014-08-24 11:47:07

标签: java multithreading

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哪个线程将睡眠新生成的一个或旧的?

2 个答案:

答案 0 :(得分:2)

  1. sleep是一种静态方法。它使调用线程休眠。更一般地说,没有直接的方法让另一个线程做任何事情,包括睡眠。您需要针对任何此类任务的特定线程间通信机制。

  2. 按照中断机制的规则结束线程(请参阅Thread#interrupt()Thread#isInterrupted()的文档。

答案 1 :(得分:1)

使用ExecutorService并使用Executors.newFixedThreadPool(int)工厂方法创建n个线程的轮询。

在上面的链接中找到示例代码,并here