如何在引用循环变量的匿名类中的循环中创建线程?

梅尔皮

我正在做一个并发服务器程序,并且正在对其进行测试。在JUnit测试中,我输入以下内容:

[...]

Client[] clients = new Client[30];
for ( int i = 0; i<30 ; i++){
    clients[i] = new Client("localhost", SERVPORT);
}

for ( Integer i = 0; i<30 ; i++){
    new Thread(){
        public void run(){
            clients[i].send(i.toString()); <--
        }
    }.start();
}
[...]

问题是Java无法编译,因为我无法在用不同方法定义的内部类中引用非最终变量i,因此我必须将i修改并写为final(但我不应该这样)。我理解这一点,但是...如何同时从所有客户端发送消息?

附加信息:在方法中send(String),我向服务器发送一条消息,然后等待服务器响应。

曼努蒂

您可以在原始for循环内运行线程,而可以i通过引用局部变量来跳过对索引变量的使用

final Client[] clients = new Client[30];
for (int i = 0; i < 30; i++) {
    final Integer integer = new Integer(i);
    final Client client = new Client("localhost", SERVPORT);
    clients[i] = client;
    new Thread(){
        public void run(){
            client.send(integer.toString());
        }
    }.start();
}

请注意final为每个循环创建整数。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在ngFor循环中创建变量?

来自分类Dev

如何在python for循环中创建和删除类实例

来自分类Dev

如何在循环中动态创建类对象?

来自分类Dev

如何在for循环中创建类(对象)的实例?

来自分类Dev

如何在for循环中创建变量名

来自分类Dev

如何在循环中创建不同类型的变量?

来自分类Dev

如何在Python中的线程循环中引发异常?

来自分类Dev

如何在循环中引用typedArray中的单个元素?

来自分类Dev

在循环中创建变量

来自分类Dev

如何在while循环中在php中添加类?

来自分类Dev

如何在管道中涉及的FOR循环中设置变量?

来自分类Dev

如何在C ++中的for循环中更新单独的变量?

来自分类Dev

如何在for循环中列出stdin中的所有变量?

来自分类Dev

在R中的嵌套for循环中创建变量

来自分类Dev

如何在循环中执行聚类

来自分类Dev

如何在Java循环中重置变量?

来自分类Dev

如何在for循环中捕获嵌套变量?

来自分类Dev

如何在循环中制作变量表?

来自分类Dev

如何在每个循环中添加变量

来自分类Dev

如何在模型的循环中创建字段?

来自分类Dev

如何在for循环中创建新字典?

来自分类Dev

如何在foreach循环中创建数组?

来自分类Dev

如何在R循环中创建列

来自分类Dev

如何在for循环中创建更新表单?

来自分类Dev

如何在for循环中创建结果向量

来自分类Dev

如何在循环中创建地图?

来自分类Dev

如何在for循环中创建实例?

来自分类Dev

如何在Python的循环中更改for循环迭代器变量?

来自分类Dev

如何在循环python外的for循环中使用变量