私が投稿した類似質問
【Java】Threadの割り込みについて

勘違いがあったので修正します。

public class Main extends Thread{
    private Timer timer;

    public static void main(String[] args) {
        try {
            Main main = new Main();
            main.start(); // --- 【1】
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    @Override
    public void run() {
        timer = new Timer();
        timer.setObserver(this);
        timer.setDaemon(true);
        try {
            timer.run();

            sleep(3000);
        } catch (InterruptedException e) {
            System.out.print("割り込み");
        }
    }
}
public class Timer extends Thread {

    private Thread observer;

    public void setObserver(Thread observer) {
        this.observer = observer;
    }

    @Override
    public void run() {
        try {
            System.out.println("THREAD COUNT");
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            System.out.println("THREAD FINAL");
            observer.interrupt();
        }
    }
}

あくまで例です。

ちょっと勘違いがあったので、訂正しました。
上記だと、MainThread (以下、 MainThread と表記)として稼働することで、 SubThread からの割り込みが可能かと思います。

この時、 MainThread の終了を待って、 main() で終了する準備をしたいのですが、
MainThread の終了を実行クラスに通知することは可能でしょうか?
"// --- 【1】" 部分の後に、データの記録等行いたいなと思っています。