我创建了一个非常简单的Java游戏,涉及一个玩家和随机移动的机器人。玩家可以通过按下按钮向地图添加机器人,然后按钮为机器人创建新线程。
所以它看起来像这样...
Thread newBotThread = new Thread(new Runnable(){
public void run(){
如果我多次按下按钮,会创建几个机器人,它们都是在线程名称下运行的吗?newBotThread'?我添加了允许玩家与机器人交互的功能,是否有一种区分线程的方法,即使它们都具有相同的名称?所以我可以阻止一个机器人,而其他人仍然继续?
非常感谢!
答案 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执行它们。只是我的意见