迭代器中每个项目的新线程

问题描述 投票:-1回答:1

我有这段代码打勾了我的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个实体。我该怎么办?

java multithreading
1个回答
-1
投票

这是您的示例代码。

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();
  }
}

通常,应避免为每个任务创建线程。考虑使用线程池。

© www.soinside.com 2019 - 2024. All rights reserved.