如何利用for循环创造多线程

老师上课时在继Thread类中用for循环start开了很多个线程,但是下来自己试了试却弄不了,这是为什么?

public class MultithReading extends Thread{
    public MultithReading(){
        Thread thread= new Thread();
        for (int i=0;i<10;i++){
            thread.start();
        }
        Thread.currentThread().getThreadGroup().list();
    }
}

该回答通过自己思路及引用到各个渠道搜索综合及思考,得到内容具体如下:

您在 MultithReading 类的构造函数中创建了一个 Thread 对象,并使用 for 循环启动了 10 个线程。但是,每次循环都使用同一个 Thread 对象启动线程,这是不正确的做法。

在 Java 中,每个线程都应该由不同的 Thread 对象来启动。如果使用同一个 Thread 对象启动多个线程,会导致线程之间的竞争和冲突,从而引发各种问题,比如线程安全问题、死锁等。

因此,正确的做法是在循环中创建多个 Thread 对象,并使用这些对象启动线程。示例如下:

public class MultithReading extends Thread {
    public MultithReading() {
        for (int i = 0; i < 10; i++) {
            Thread thread = new Thread(this);
            thread.start();
        }
    }

    @Override
    public void run() {
        // 线程执行的代码
        // ...
    }
}

在上面的示例中,我们在 for 循环中创建了 10 个 Thread 对象,并使用这些对象启动了 10 个线程。每个线程的执行代码在 run 方法中实现,这个方法是 Thread 类的一个抽象方法,需要我们自己实现。

另外,如果您想获取线程组的信息,可以使用 ThreadGroup 类的 list 方法,这个方法可以将线程组中的所有线程打印出来。但是,您需要注意的是,list 方法只是将线程信息打印到控制台上,不会返回任何结果。如果您想获取线程信息,可以使用 ThreadGroup 类的 enumerate 方法,这个方法会返回线程数组,包含线程组中的所有线程。


如果以上回答对您有所帮助,点击一下采纳该答案~谢谢

继承Thread类时需要重写Run方法啊

你这代码不应该直接报错吗?每个线程对象的start()方法是用来启动线程的,只能调用一次,第二次调用就会报错了啊!!!
不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^