豆浆~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 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效