使用for循环创建和命名多个并发线程

亚瑟

有没有办法创建多个与for循环同时运行的线程?考虑以下示例:

for(int i = 1; i<=36; i++) {
     if(new Random().nextInt(2)==0){
         ActionThread nr = new ActionThread();
     }
}

我不想在if语句完成后杀死线程。每个线程的结尾在ActionThread类本身中是随机确定的。另外,如何自动命名线程?例如,代替nr,第一个线程应命名为nr1,第二个nr2,第三个nr3,依此类推。

斯蒂芬·C

我假设这ActionThread是您创建的一些自定义类,它可以扩展Thread

我不想在if语句完成后杀死线程。

他们不会。但是,您似乎还没有启动它们。阅读的javadocs Thread阅读顶部的材料,然后查看start()run()方法。

如果您不启动线程,那么什么也不会发生。

另外,如果希望应用程序的其他部分能够在创建线程后对线程执行“操作”,则应将nr本地变量替换为应用程序其余部分可以使用的数据结构;例如列表或数组。

(也可以通过ThreadGroup找到现存的线程,但这很复杂。)

另外,如何自动命名线程?

调用Thread.setName(),或将线程名称传递给(相关的)Thread构造函数。例如:

  nr.setName("thr" + i);

或者甚至可以ActionThread在构造函数中将自己设置设为自己的名称。


我还应该指出,创建的子类通常被认为是一个坏主意Thread最好将线程逻辑放入自定义Runnable类中,然后创建Runnable实例并将其作为Thread构造参数传递像这样:

    public class MyRunnable implements Runnable {
         @Override
         public void run() {
              // thread logic goes here
         }
    }

    Thread th = new Thread(new MyRunnable());
    th.start();

如果要将参数传递给线程逻辑,请向可运行类中添加一些参数的构造函数,并在实例化可运行时提供它们。

为什么要这样呢?因为它使您可以轻松地将代码更改为使用线程循环或执行程序等。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用for循环创建和命名多个并发线程

来自分类Dev

使用 VBA 创建和命名图表

来自分类Dev

在C ++中创建和使用线程

来自分类Dev

如何使用Java中的循环创建多个线程

来自分类Dev

线程安全并发使用,多个实例?

来自分类Dev

使用for循环创建和分配不同的变量

来自分类Dev

如何使用for循环创建和填充列?

来自分类Dev

片段创建和检索并发

来自分类Dev

在VBA中创建和使用命名的互斥锁

来自分类Dev

使用for循环在Tkinter中创建和使用小部件(缩放)

来自分类Dev

Java - 使用线程池并发发送多个文件时出错

来自分类Dev

Glassfish 4-使用并发API创建托管线程

来自分类Dev

Glassfish 4-使用并发API创建托管线程

来自分类Dev

如何使用for循环创建和填充如下所示的结构?物镜

来自分类Dev

如何使用数组在for循环中创建和保留变量?

来自分类Dev

运行多个并发线程的后果?

来自分类Dev

在循环内使用ggtittle命名多个图

来自分类Dev

使用循环重命名多个文件

来自分类Dev

如何在foreach循环PHP中创建和命名复选框

来自分类Dev

在SQL Server中使用多个参数创建和执行函数

来自分类Dev

使用for循环创建多个矩阵

来自分类Dev

循环创建和销毁对象

来自分类Dev

Netty:使用多个事件循环的并发问题

来自分类Dev

创建和使用类

来自分类Dev

使用Java RecursiveTasks创建多个线程

来自分类Dev

使用共享资源创建多个线程

来自分类Dev

数据帧的迭代创建和命名

来自分类Dev

在UI线程上创建和启动任务

来自分类Dev

如何创建和管理串行后台线程