Java Thread可以不止一次存活吗?

时间:2012-09-07 00:50:41

标签: java multithreading

好的....让我尽力解释这个...... 另外:这是针对Minecraft中的mod。 好的,所以我创建了一个线程对象

public static Thread KillThread = new Thread();

然后在我的主要类的构造函数中,当游戏(Mine craft开始)时调用

KillThread = new Thread(new KillAuraThread());

KillAuraThread是作为线程的类的名称.. 所以我现在创建了一个帖子。它在哪里让我感到沮丧 线程将运行正好1秒,并且它不能多次运行,否则将破坏延迟和线程的点。

if(KillAura.enabled && !KillThread.isAlive())
    {
        System.out.println("Go AURA!");
        try
        {
            KillThread.start();
        }catch (Exception e)
        {
            e.printStackTrace();
        }
    }

这称为游戏中的每个刻度,它会发送位置更新等。

现在这里是我遇到问题的地方。一旦线程启动它就会变为“活着”,当它结束时它就不再“活着”。但是线程只能启动一次吗?因为在第一次运行后它不再工作了?和想法?链接?

2 个答案:

答案 0 :(得分:7)

是线程只能启动一次,不能重用Thread对象。

  

不止一次启动线程永远不合法。特别是,a   一旦完成执行,线程可能无法重新启动。见java.lang.Thread.start()

无论这个事实如何,都不要将Thread.State用于线程生命周期管理。

答案 1 :(得分:5)

你是对的,线程只能运行一次而且它是illegal to start/run a thread more than once。您应该考虑使用while循环来保持线程活跃。

您应该使用java.util.concurrent包中的类来定期安排固定任务,而不是直接处理线程,这显然是您尝试做的事情。看看ThreadPoolExecutor