ho un prolema con un thread e non riesco a capire da dove parta,deve essere un errore stupido perchè di solito uso sempre la stessa procedura per crearli e cioè: nella classe di interesse implemento runnable, poi nel costruttore di questa classe assegno "this" a una variabile thread, usando ovviamente il suo costruttore; tutto quello che devo fare lo scrivo nel metodo run.
Quando però lo dovrei far partire in una classe a parte, questo mi da errore dicendo che il metodo start non esiste
A questo punto mi è venuto un dubbio: non è che per caso un thread può essere fatto partire solo all'interno di un main??
in ogni caso questo è il codice della prima classe:
Codice PHP:
package manifest;
import java.io.File;
import java.io.IOException;
import java.nio.file.NoSuchFileException;
import javax.swing.JFileChooser;
import javax.swing.JOptionPane;
import util.ExtensionFilter;
public class GeneratorStarter implements Runnable{
private Thread t;
public GeneratorStarter(int p){
t = new Thread(this);
t.setPriority(p);
}
public void run(){
File file = new File("");
JFileChooser chooser;
try{
chooser = new JFileChooser(new File("C:\\Users\\Hp\\Desktop\\workspace"));
}catch(RuntimeException e){
chooser = new JFileChooser(file.getAbsolutePath());
}
chooser.setFileFilter(new ExtensionFilter("java"));
extLoop: for( ; ; ){
int response = chooser.showOpenDialog(null);
if(response == JFileChooser.APPROVE_OPTION){
file = chooser.getSelectedFile();
try{
ManifestGenerator gen = new ManifestGenerator(file);
gen.generate();
}catch(RuntimeException | IOException e){
JOptionPane.showMessageDialog(null, "Errore interno!");
e.printStackTrace();
}
JOptionPane.showMessageDialog(null, "file creato");
}else{
for( ; ; ){
int exit = JOptionPane.showConfirmDialog(null, "Exit?", "do you want to exit?", JOptionPane.YES_NO_OPTION);
if(exit == JOptionPane.YES_OPTION)
System.exit(0);
else if(exit == JOptionPane.NO_OPTION)
continue extLoop;
else
JOptionPane.showMessageDialog(null, "click only 'yes' or 'no' please!");
}
}
break;
}
}
}
e questo è il metodo actionPerformed di una GUI che ho creato....
Codice PHP:
public void actionPerformed(ActionEvent e){
if(e.getSource() == generator){
gen = new GeneratorStarter(Thread.NORM_PRIORITY);
gen.start();
}
}