当前位置: 首页 > 知识库问答 >
问题:

让对象的所有实例同时调用方法(java)

周奇文
2023-03-14

所以我有一个名为Tile的超类和许多子类,如BlueTile,GreenTile等。

不同子类的所有实例都存储在ArrayList中(例如(blueTile1、blueTile2、greenTile1……)。

在超类中有一个名为“activateTile()”的方法,所有子类都以不同的方式使用它。

现在,当我在阵列中循环并用blueTile激活所有蓝色Tile时。它们会一个接一个地被激活,对吗?

如何让数组中的所有BlueTile同时调用该方法?或者有没有办法简单地说“该类的所有实例,现在就使用该方法”?

谢谢你:)

共有1个答案

白昊东
2023-03-14

除非您打算为每个实例启动一个新线程,否则它们将始终按顺序运行方法。

你打算这样做吗?

void activateInParallel() {
    ArrayList<Thread> tileThreads = new ArrayList<>();
    for(Tile t : allTiles) {
        tileThreads .add(new Thread(()->t.activateTile()));
    }
    tileThreads.forEach(Thread::start);
}

我不知道足够的细节,但这很可能不是最好的方法。我会考虑使用一个线程池的执行器,并以类似的方式将工作卸载到它。

    Executor executor = Executors.newFixedThreadPool(8);
    void activateInParallel() {
        for(Tile t : allTiles) {
            executor.execute(t::activateTile);
        }
    }
 类似资料:
  • 为了操作一个对象,我们需要先获取这个对象的实例,而这肯定会涉及调用对象的构造方法。有关如何在扩展中调用PHP的函数与对象的方法这里不展开描述了。 首先我们先了解下一个object在PHP内核中到底是如何实现的。 typedef struct _zend_object_value { zend_object_handle handle; zend_object_handlers *h

  • 问题内容: 我尝试过一些关于绑定和未绑定方法的代码。当我们调用它们时,我认为它们都会返回对象。但是,当我用于获取一些信息时,它返回的内容我并不理解。 IDE:Eclipse 插件:pydev 输出是… 为什么#1和#2返回相同的ID?他们不是不同的对象吗?如果我们分配和两个变量,#3,#4回报不同的ID。 我认为#3和#4表明它们不是同一对象,而是#1和#2 … 绑定方法的ID和未绑定方法的ID有

  • 本文向大家介绍JS获得一个对象的所有属性和方法实例,包括了JS获得一个对象的所有属性和方法实例的使用技巧和注意事项,需要的朋友参考一下 今天遇到一个比较棘手的问题,需要了解一个JS对象的所有属性和方法,在网上发现这段代码,帮我解决了问题,记录下来,核心代码和原理如下: 以上这篇JS获得一个对象的所有属性和方法实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持呐喊教程。

  • 我有两个单身班 单人二等舱 测试类别 如何为singleton1类执行适当的JUNIT,我不想在运行singleton1时从Singleton2执行任何方法。我试着刺探和嘲弄。当我在监视时,真正的方法是被调用。当我模拟Singleton2时,由于模拟调用问题,所有测试运行都失败了。 如果我错了,请告诉我

  • 7.2.3 对象方法的调用 一旦创建了对象,就可以通过向对象发消息来调用对象的方法。消息的格式如下: <对象>.<方法>(<实参>) 其含义是请求<对象>执行<方法>,方法定义中列出的形式参数由<实参>提供。 例如,接着前面的例子执行如下语句: >>> p1.whatName() My name is Lucy >>> p2.whatName() My name is Tom >>> p2.ho

  • 假设我有一段代码,可以创建一个具有给定名称的苹果实例 这条线可以被许多玩家调用,每个玩家都有一个Apple类的实例,在这个实例中,名称有点像ID 现在假设在Apple类中有一个ArrayList,它存储每个玩家的朋友 还有一个getter/setter用于更新和检索朋友,所以如果一个特定的玩家键入一个命令 /addfriend将一个朋友添加到他的特定实例数组列表中,我将如何做到这一点? 示例,更新