java - Java中如何更改线程组的名称?

标签 java multithreading

我对多线程非常陌生,所以我要问的问题可能很简单。

在我的程序中,有两个线程,一个是ma​​in线程,第二个是mythread

package multithreading;

public class ThreadDemo {
    public static void main(String args[]) {        
        System.out.println(Thread.currentThread());
        new MyThread();
        try {
            for(int i = 1; i<=5; i++) {                             
                Thread.sleep(1000);
            }

        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }


}

class MyThread extends Thread {
    public MyThread() {     
        start();
    }

    public void run() {
        Thread.currentThread().setName("mythread");
        System.out.println(Thread.currentThread());
        for(int i = 1; i<=5; i++) {
            try {
                Thread.sleep(500);
                //System.out.println("MyThread i value "+i);

            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }
}

现在,程序的输出是,

Thread[main,5,main]
Thread[mythread,5,main]

我知道输出的含义。

但是我想将mythread的线程组更改为我自己的,而不是ma​​in。 我怎样才能做到这一点?

Java中使用什么方法来改变线程的线程组?

更改线程组会有什么问题吗?

最佳答案

我建议实现 Runnable 而不是扩展 Thread。然后,您可以轻松地创建一个具有自己的组的新线程:

public class ThreadDemo {
   public static void main(String args[]) {
        System.out.println(Thread.currentThread());
        Runnable r = new MyRunnable();
        new Thread(new ThreadGroup("my group"), r).start();
        try {
            for (int i = 1; i <= 5; i++) {
                Thread.sleep(1000);
            }

        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}

class MyRunnable implements Runnable {

    public void run() {
        Thread.currentThread().setName("mythread");
        System.out.println(Thread.currentThread());
        for (int i = 1; i <= 5; i++) {
            try {
                Thread.sleep(500);
                //System.out.println("MyThread i value "+i);

            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }
}

关于java - Java中如何更改线程组的名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17674113/

相关文章:

java - 错误 : androidmanifest. xml 文件丢失 --> 我错过了什么?

java - 使单个线程执行完成

java - 使用 Tomcat 在 Eclipse 中调试远程应用程序

java - 许多 ProducerS 和许多 ConsumerS。让最后一个生产者活着杀死消费者

c# - ThreadPool.QueueUserWorkItem 导致应用程序挂起直到完成

java - 这两个Java之间的区别(创建对象)

java - 每隔 24 小时安排一次

使用 html/css 设置异常堆栈跟踪样式的 Java 库

java - 从客户端断开连接恢复服务器的最佳方法

multithreading - 如何使用 Log4perl 在多线程 Perl 应用程序中轮换日志文件