Devi sovrascrivere l'altro costruttore, quello che accetta la finestra principale e il flag booleano che indica se la JDialog e' modale o no(in realta'basta il primo se presupponi che la finestra possa essere solo modale), poi alla prima riga chiami il costruttore della superclasse.
codice:
package provafinestra;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import javax.swing.*;
public class finestrasecondaria extends JDialog {
private Container a;
private JButton b;
public finestrasecondaria(JFrame owner, boolean modal){
super(owner, modal);
Container a = getContentPane();
//Eccetera
L'altra classe la modifichi quando crei la finestra secondaria
codice:
finestrasecondaria n= new finestrasecondaria(this, true);
Per la seconda domanda, a meno che non hai un buon motivo per forzare l'arresto di tutti i thread, usa il metodo dispose() sia per JFrame che per JDialog.