豆浆~363 2023-04-03 20:31 采纳率: 76.5%
浏览 19
已结题

如何利用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();
    }
}
  • 写回答

4条回答 默认 最新

  • Leodong. 2023-04-03 20:45
    关注

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

    您在 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 方法,这个方法会返回线程数组,包含线程组中的所有线程。


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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 4月13日
  • 已采纳回答 4月5日
  • 创建了问题 4月3日

悬赏问题

  • ¥20 wireshark抓不到vlan
  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来