豆浆~363 2023-04-03 12:31 采纳率: 70%
浏览 21
已结题

如何利用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 12: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月12日
  • 已采纳回答 4月5日
  • 创建了问题 4月3日
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部