Java Thread Join
Salute a tutti.
Sto realizzando una piccola applicazione con Java che mi da modo di imparare il linguaggio.
Ho incontrato un problema che non riesco a risolvere.
Ad un certo punto del programma principale, mi serve aprire una finestra dove poter immettere
dei parametri che condizionano il resto dell’elaborazione.
La funzione “join” , da quanto ho capito, blocca l’esecuzione del programma che ha fatto partire il thread fino a che questo non ha terminato la propria esecuzione.
La cosa funziona se quella del thread è un’elaborazione batch, se invece è interattiva il thread si conclude con la visualizzazione del frame.
Questo è il codice :
In pratica il main dovrebbe proseguire solo dopo che è stato premuto “btnPigia” avendo a quel punto a disposizione il valore di “txtField”.
La classe Oggetto sarà istanziata anche da altre classi dell’applicazione.
Non so se sia il modo corretto per risolvere il problema, quindi qualsiasi suggerimento sarà
prezioso.
Grazie.
Sto realizzando una piccola applicazione con Java che mi da modo di imparare il linguaggio.
Ho incontrato un problema che non riesco a risolvere.
Ad un certo punto del programma principale, mi serve aprire una finestra dove poter immettere
dei parametri che condizionano il resto dell’elaborazione.
La funzione “join” , da quanto ho capito, blocca l’esecuzione del programma che ha fatto partire il thread fino a che questo non ha terminato la propria esecuzione.
La cosa funziona se quella del thread è un’elaborazione batch, se invece è interattiva il thread si conclude con la visualizzazione del frame.
Questo è il codice :
- Codice: Seleziona tutto
public class Trmain
{
public static void main(String[] args)
{
Tr tr = new Tr();
Thread t1 = new Thread(tr);
t1.start();
try {
t1.join();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("errore");
}
System.out.println("continua programma");
}
}
- Codice: Seleziona tutto
public class Tr implements Runnable
{
@Override
public void run()
{
Oggetto v2 = new Oggetto();
}
}
- Codice: Seleziona tutto
public class Oggetto extends JFrame
{
private JTextField textField;
public Oggetto()
{
setTitle("Oggetto");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(1, 1, 450, 300);
textField = new JTextField();
getContentPane().add(textField, BorderLayout.NORTH);
textField.setColumns(10);
JButton btnPigia = new JButton("pigia");
btnPigia.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent arg0) {
System.out.println("fatto");
}
});
getContentPane().add(btnPigia, BorderLayout.CENTER);
JLabel lbl = new JLabel();
setVisible(true);
}
}
In pratica il main dovrebbe proseguire solo dopo che è stato premuto “btnPigia” avendo a quel punto a disposizione il valore di “txtField”.
La classe Oggetto sarà istanziata anche da altre classi dell’applicazione.
Non so se sia il modo corretto per risolvere il problema, quindi qualsiasi suggerimento sarà
prezioso.
Grazie.