2014-04-18 52 views
0

如果我将一个新线程对象分配给一个线程变量并在线程对象之前绑定到变量的线程仍在运行时运行,会发生什么?它会被垃圾收集并销毁吗?或者他们会平行运行?在旧线程运行时启动新线程

事情是这样的:

class ThreadExample implements Runnable { 
    public void run() { 
     // Something that runs for a long time 
    } 
} 

public class ThreadExampleMain { 
    public static void main(String[] args) { 
     // Client Code 
     ThreadExample e = new ThreadExample(); 
     Thread t = new Thread(e); 
     t.start(); 

     e = new ThreadExample(); 
     t = new Thread(e); 
     t.start(); 
    } 
} 

这是否会启动两个线程并行运行,或将第一个线程停止和被垃圾收集?

+1

你正在使用什么线程库?你能向我们展示一些示例代码来展示你的建议吗? – Dai

+0

添加代码示例 –

回答

0

如果你谈论的Java那么答案是:他们将在并行运行。垃圾收集与线程管理无关。

您可以使用此示例代码看到它:创建10个线程后

public class LostThread { 
    public static void main(String[] args) { 
     for (int i = 0; i < 10; i++) { 
      final int value = i; 
      new Thread(new Runnable() { 
       @Override 
       public void run() { 
        while (true) { 
         try { 
          System.out.println(value); 
          Thread.sleep(1000); 
         } catch (InterruptedException e) { 
          // TODO Auto-generated catch block 
          e.printStackTrace(); 
         } 
        } 
       } 
      }).start(); 
     } 
    } 
} 

主要完成,但他们仍然在运行。

+0

如何检查线程是否正在运行并在启动新线程之前停止它? –

+0

在SE上看到这个话题,它解释了如何停止线程:http://stackoverflow.com/questions/19894607/java-how-to-stop-thread –