MyThread.java Source code

Java tutorial

Introduction

Here is the source code for MyThread.java

Source

class MyThread extends Thread {
    boolean stopped;

    MyThread(ThreadGroup tg, String name) {
        super(tg, name);
        stopped = false;
    }

    public void run() {
        System.out.println(Thread.currentThread().getName() + " starting.");
        try {
            for (int i = 1; i < 1000; i++) {
                System.out.print(".");
                Thread.sleep(250);
                synchronized (this) {
                    if (stopped)
                        break;
                }
            }
        } catch (Exception exc) {
            System.out.println(Thread.currentThread().getName() + " interrupted.");
        }
        System.out.println(Thread.currentThread().getName() + " exiting.");
    }

    synchronized void myStop() {
        stopped = true;
    }
}

public class Main {
    public static void main(String args[]) throws Exception {
        ThreadGroup tg = new ThreadGroup("My Group");

        MyThread thrd = new MyThread(tg, "MyThread #1");
        MyThread thrd2 = new MyThread(tg, "MyThread #2");
        MyThread thrd3 = new MyThread(tg, "MyThread #3");

        thrd.start();
        thrd2.start();
        thrd3.start();

        Thread.sleep(1000);

        System.out.println(tg.activeCount() + " threads in thread group.");

        Thread thrds[] = new Thread[tg.activeCount()];
        tg.enumerate(thrds);
        for (Thread t : thrds)
            System.out.println(t.getName());

        thrd.myStop();

        Thread.sleep(1000);

        System.out.println(tg.activeCount() + " threads in tg.");
        tg.interrupt();
    }
}