区分线程,即使它们具有相同的名称

时间:2013-04-15 22:55:17

标签: java multithreading

我创建了一个非常简单的Java游戏,涉及一个玩家和随机移动的机器人。玩家可以通过按下按钮向地图添加机器人,然后按钮为机器人创建新线程。

所以它看起来像这样...

Thread newBotThread = new Thread(new Runnable(){

            public void run(){

如果我多次按下按钮,会创建几个机器人,它们都是在线程名称下运行的吗?newBotThread'?我添加了允许玩家与机器人交互的功能,是否有一种区分线程的方法,即使它们都具有相同的名称?所以我可以阻止一个机器人,而其他人仍然继续?

非常感谢!

2 个答案:

答案 0 :(得分:2)

您可以将它们添加到Collection,例如ArrayList

ArrayList<Thread> botThreads = new ArrayList<Thread>();
...
botThreads.add(new Thread(new Runnable(){ 
...

当然你应该在botThreads声明可以访问其他类的地方,所以在你的按钮事件处理程序之外。

答案 1 :(得分:0)

简短回答:有一个方法Thread #setName(String)和一个设置线程名称的构造函数Thread(String),必须在调用start()方法之前设置它。

答案很长:你很可能不应该使用这个名字来控制你的机器人。我建议创建一个实现Runnable的类,它包含go(),stop(),continue()或者你需要的任何方法,每当你创建这些类的新实例时,你都会在某处保留引用(可能是Map或BotManager)或者其他)你也可能应该用Executor执行它们。只是我的意见