Java >> Java tutorial >  >> Java

Java ThreadGroup enumerate() metode med eksempel

ThreadGroup Class enumerate() metode

Syntaks:

    public int enumerate (Thread[] th1);
    public int enumerate (Thread[] th2, boolean recurr1);
    public int enumerate (ThreadGroup[] tg1);
    public int enumerate (ThreadGroup[] tg2, boolean recurr2);
  • enumerate() metode er tilgængelig i java.lang-pakken.
  • enumerate (Thread[] th1) metode bruges til at kopiere alle aktive tråde i en trådgruppe og placeres i det givne array Thread[].
  • enumerate (Thread[] th2, boolean recurr1) metode bruges til at kopiere alle aktive tråde i en trådgruppe og placeres i det givne array Thread[], men hvis den givne booleske variabel er sat til sand, er referencer til hver aktive tråd i denne trådundergruppe også inkluderet.
  • enumerate (ThreadGroup[] tg1) metode bruges til at kopiere alle aktive undergrupper i en trådgruppe og placeres i det givne array ThreadGroup[].
  • enumerate (ThreadGroup[] tg2, boolean recurr2) metode bruges til at kopiere alle aktive undergrupper i en trådgruppe og placeres i det givne array ThreadGroup[], men hvis den givne booleske variabel er sat til sand, er reference til hver aktive undergruppe i denne undergruppe også inkluderet. Disse metoder kan give en undtagelse på tidspunktet for kopier af alle aktive tråde i denne trådgruppe.
    SecurityException – Denne undtagelse kan medføre, når den aktuelle tråd ikke har tilladelse til at opregne denne trådgruppe.
  • Disse metoder er ikke-statiske metoder, de er kun tilgængelige med klasseobjekter, og hvis vi forsøger at få adgang til disse metoder med klassenavnet, får vi en fejl.

Parameter(r):

  • I det første tilfælde repræsenterer Tråd[] th1 – en række "Tråd"-typer, som sættet af kopierede tråde skal placeres i.
  • I det andet tilfælde, Thread[] th1, boolean recurr1
    • Tråd[] th1 – Ligner som defineret i det første tilfælde.
    • boolean recurr1 – repræsenterer en flagstatus, der angiver at inkludere tråde er trådgruppe, der er undergrupper af denne trådgruppe.
  • I det tredje tilfælde repræsenterer ThreadGroup[] tg1 – et array af typen "ThreadGroup", som sættet af den kopierede trådgruppe skal placeres i.
    • I det fjerde tilfælde, ThreadGroup[] tg2, boolean recurr2
    • Trådgruppe[] tg2 – Ligner som defineret i det tredje tilfælde.
    • boolesk recurr2 – repræsenterer en flagstatus, der angiver at inkludere trådgrupper.

Returværdi:

I det første tilfælde er metodens returtype int – Den returnerer antallet af tråde, der er placeret i et array.

I det andet tilfælde er metodens returtype int – lignende som defineret i det første tilfælde.

I det tredje tilfælde er metodens returtype int – Den returnerer antallet af trådgrupper placeret i et array.

I det fjerde tilfælde er metodens returtype int – Lignende som defineret i det tredje tilfælde.

Eksempel:

// Java program to demonstrate the example 
// of enumerate() method of ThreadGroup()class

public class Enumerate implements Runnable {
    public static void main(String[] args) {
        Enumerate en = new Enumerate();
        en.enumerates();
    }

    public void enumerates() {
        try {
            // Create two thread group and the named are base
            // and derived

            ThreadGroup base = new ThreadGroup("Base ThreadGroup");
            ThreadGroup derived = new ThreadGroup(base, "Derived ThreadGroup");

            // create two threads
            Thread th1 = new Thread(base, this);
            Thread th2 = new Thread(derived, this);

            // By using getName() method is to retrieve the
            // name of the thread th1
            System.out.println(th1.getName() + " " + "begins.....");

            // By using start() method is to start its execution 
            // of thread th1
            th1.start();

            // By using getName() method is to retrieve the
            // name of the thread th2
            System.out.println(th2.getName() + " " + "begins.....");

            // By using start() method is to start its execution 
            // of thread th2
            th2.start();

            Thread[] t1 = new Thread[base.activeCount()];
            ThreadGroup[] tg1 = new ThreadGroup[base.activeGroupCount()];

            // By using enumerate() method is to put the
            // copied threads in an array

            System.out.println();
            int cnt1 = base.enumerate(t1);
            for (int i = 0; i < cnt1; ++i) {

                System.out.print("enumerate(Thread[] t1) :");
                System.out.println(t1[i].getName() + " " + "exists");
            }

            System.out.println();
            int cnt2 = base.enumerate(t1, true);
            for (int j = 0; j < cnt2; ++j) {

                System.out.print("enumerate(Thread[] t1, boolean recurr) :");
                System.out.println(t1[j].getName() + " " + "exists");
            }

            System.out.println();
            int cnt3 = base.enumerate(tg1);
            for (int k = 0; k < cnt3; ++k) {

                System.out.print("enumerate(ThreadGroup[] tg1) :");
                System.out.println(tg1[k].getName() + " " + "exists");
            }

            System.out.println();
            int cnt4 = base.enumerate(tg1, true);
            for (int l = 0; l < cnt4; ++l) {

                System.out.print("enumerate(ThreadGroup[] tg1, boolean recurr) :");
                System.out.println(tg1[l].getName() + " " + "exists");
            }

            // By using join() method is to wait the current
            // thread till complete execution of another
            // thread
            th1.join();
            th2.join();
        } catch (InterruptedException ex) {
            ex.printStackTrace();
        }

    }

    // Override run()
    public void run() {
        for (int k = 0; k < 100; ++k)
            ++k;
        System.out.println(Thread.currentThread().getName() + " " + "ends.....");
    }

}

Output

Thread-0 begins.....
Thread-1 begins.....
Thread-0 ends.....

Thread-1 ends.....
enumerate(Thread[] t1) :Thread-1 exists


enumerate(ThreadGroup[] tg1) :Derived ThreadGroup exists

enumerate(ThreadGroup[] tg1, boolean recurr) :Derived ThreadGroup exists

Java tag