我有这段代码打勾了我的JAVA游戏,但我需要为迭代器中的每个实体创建一个新线程。
public void tick(){
player.tick();
Iterator<Entity> it = entities.iterator();
while (it.hasNext()) {
Entity e = it.next();
e.tick();
}
}
我尝试了类似的方法,但是一点都没做。
public void run(){
entityThread = new Thread();
entityThread.start();
running = true;
Iterator<Entity> it = entities.iterator();
while(running) {
player.tick();
while (it.hasNext()) {
Entity e = it.next();
e.tick();
try {
entityThread.join();
System.out.println("vyksta join");
System.out.println(Thread.currentThread().getName());
} catch (InterruptedException er) {
er.printStackTrace();
}
}
}
}
我曾考虑过做一个线程池,但是迭代器中没有很多东西。有5个实体。我该怎么办?
这是您的示例代码。
public void tick() {
player.tick();
Iterator<Entity> it = entities.iterator();
while (it.hasNext()) {
Entity e = it.next();
Runnable task = () -> e.tick();
new Thread(task).start();
}
}
通常,应避免为每个任务创建线程。考虑使用线程池。