2010-01-16 63 views
15

这里是我的代码:一次只有一个线程!

new Thread() { 
    @Override 
    public void run() { 
     try { player.play(); } 
     catch (Exception e) { System.out.println(e); } 
    } 
}.start(); 

从而创建并启动一个线程。我想修改这段代码,以便只有在当时没有其他线程打开的情况下线程才会启动!如果有我想关闭他们,并开始这一个。提前致谢!

+3

(除主线程,我猜;)) – 2010-01-16 16:46:46

回答

36

您可以创建一个ExecutorService,它只允许使用Executors.newSingleThreadExecutor方法的单个线程。一旦你获得了单线程执行,你可以调用executeRunnable参数:

Executor executor = Executors.newSingleThreadExecutor(); 
executor.execute(new Runnable() { public void run() { /* do something */ } }); 
+0

迷人的,不知道是不是我需要这一点,但好知道。 – 2010-01-16 15:17:10

+0

但是,他只能一次运行一个线程。 – danben 2010-01-16 15:17:36

+1

这就是他想要的,我想,在任何给定的时间只能运行一种类型的线程。 – 2010-01-16 15:22:38

-6

,你可以为类创建一个静态数据成员(其中穿线发生),这是每次递增该类的对象被调用,读取和u得到线程的数量开始

+1

这是一个好主意,但那么我将如何关闭其他线程?我不会有任何提及他们的 – 2010-01-16 15:27:04