////////////////////////////////////////////////////////////////////////////////
//  << j512c.java >>
//
//  スレッド(1):スレッド(アクティブなスレッドの表示)
//
//  アクティブなスレッドを確認する。
//
//  (1)スレッド(Thread1)の定義。
//  (2)作成するスレッドの個数nを設定。
//  (3)作成したスレッドを格納する配列thを準備。
//  (4)スレッドの作成。
//  (5)スレッドの実行。
//  (6)アクティブなスレッド数を取得。
//  (7)アクティブなスレッドを格納する配列thaを準備。
//  (8)アクティブなスレッドを取得。
//  (9)アクティブなスレッド名を取得。
//
//  ●メインスレッド
//    Javaプログラムは、必ず一つのスレッド(名前:main)をもつ。
//
//  ●Threadクラスのメソッド
//    public static int enumerate(Thread array[])
//      機能:アクティブなすべてのスレッドオブジェクトを取得し、配列に保存。
//            スレッドオブジェクト数を返す。
//            クラスメソッドなので、クラス名.メソッド名で呼び出す。
//  public static int activeCount()
//      機能:アクティブなスレッドオブジェクト数を返す。
//
////////////////////////////////////////////////////////////////////////////////

//(1)
class Thread1 extends Thread { 
  public void run() {
    String s = Thread.currentThread().getName();
    System.out.println("スレッド:" + s + " 起動");
  }
}

class j512c {
  public static void main(String args[]) {

    int n = 5; //(2)

    Thread1 th[] = new Thread1[n]; //(3)
    for( int i=0; i<n; i++ ) {
      th[i] = new Thread1(); //(4)
      th[i].start(); //(5)
    }

    int m = Thread.activeCount(); //(6)
    Thread tha[] = new Thread[m]; //(7)
    Thread.enumerate(tha); //(8)
    System.out.println("アクティブなスレッド数:" + m);
    System.out.println("アクティブなスレッド一覧");
    for( int i=0; i<m; i++ ) {
      String s = tha[i].getName(); //(9)
      System.out.println("[" + i + "] " + s);
    }

  }

}
実行結果
% javac j512c.java
% java j512c
アクティブなスレッド数:6
アクティブなスレッド一覧
[0] main
[1] Thread-0
[2] Thread-1
[3] Thread-2
[4] Thread-3
[5] Thread-4
スレッド:Thread-0 起動
スレッド:Thread-1 起動
スレッド:Thread-2 起動
スレッド:Thread-3 起動
スレッド:Thread-4 起動