Thread zu Threadgroup hinzufügen

DealeyLama

Mitglied
Hallo...

Weiß hier vielleicht Jemand ob - und wenn ja: wie - ich einen Thread nach seiner initialisierung einer Threadgroup hinzufügen kann?

Vielen Dank im voraus und schönen Tag noch...

Alexander Schell
 
Hallo!

Schau mal hier:
Java:
/**
 * 
 */
package de.tutorials;

import java.util.concurrent.TimeUnit;

/**
 * @author Tom
 * 
 */
public class AddThreadToThreadGroupExample {

    /**
     * @param args
     */
    public static void main(String[] args) {
        Runnable runnable = new Runnable() {
            public void run() {
                while (true) {

                    System.out
                            .println(Thread.currentThread().getName()
                                    + " belongs to: "
                                    + Thread
                                            .currentThread()
                                            .getThreadGroup()
                                            .getName());

                    try {
                        TimeUnit.MILLISECONDS.sleep(500L);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            }
        };
        
        ThreadGroup threadGroup = new ThreadGroup("BUBU");
        new Thread(threadGroup,runnable).start();
        new Thread(threadGroup,runnable).start();
        new Thread(threadGroup,runnable).start();
    }
}

Das hinzufügen von einem Thread zu einer ThreadGroup nachdem er erzeugt wurde ist von der public API her nicht erlaubt. Das ging nur über Reflection (ThreadGroup-> add(Thread) / addUnstarted(Thread)) jedoch ist das keine gute Idee, do so einige Interne Checks ausgehebel werden würden. Wenn ein Thread erzeugt wird bekommt dieser standardmäßig die ThreadGroup des Thread zugewiesen in dem der neue Thread erzeugt wurde.

Gruß Tom
 
Vielen Dank... :)

Leider hab' ich keine Runnable-Instanzen sondern Kinder der Klasse Thread...
Ich werde also wahrscheinlich nicht drumherum kommen - falls ich diese Funktionalität wirklich brauchen sollte - mir eine eigene ThreadGroup-Klasse zu schreiben, die per Reflection diese Möglichkeit zur Verfügung stellt...

Schönen Abend noch

Alexander schell
 
Zurück