Niente, eseguendo delle funzioni in altre classi, non mi si interrompe.
O meglio, mi avverte che ci ha messo più tempo ma le funzioni continuano a lavorare lo stesso, chiaramente le ho richiamate nel codice con il Time To Live..
Per capirci, se metto un tempo di vita di mezzo secondo, mi viene detto che non si è finito il lavoro in tempo, ma aspettando qualche secondo, poi mi viene caricata l'immagine e le informazioni dalla funzione comunque...
codice:class Task implements Callable<String> { // Codice con tempo massimo di esecuzione @Override public String call() throws Exception { Thread.sleep(4000); // Qui lavoro, ipotizzo molto codice String Temp1 = FText.getText(); // Titolo da cercare if(!Temp1.equals("")){ // Controllo sia inserito qualcosa String Temp = Temp1.replaceAll(" ", "+"); // Sostituisco gli spazi con il + per la ricerca String Url = "http://www.imdbapi.com/?t=" + Temp; // Indirizzo per la ricerca film try { ImageIcon icon = new ImageIcon("Loading.gif"); // Icona di caricamento Img.setIcon(icon); // DatiFilm è di tipo Film, e il costruttore riceve un array di stringhe da 0 a 28 elaborato DatiFilm = new Film(ElabFilm.downloadFromUrl (new URL (Url), "Mozilla/5.0")); // Popolo il film StampaRic(DatiFilm); // Mostro il risultato della ricerca Action.setEnabled(true); // Ora posso fare una immissione dati nel db e abilito il tasto } catch (MalformedURLException e1) { // Se c'è qualche problema di url... ImageIcon icon = new ImageIcon("BaseFilm.jpg"); Img.setIcon(icon); showMessage("The service is unavailable.", "HTTP Error 503.", JOptionPane.ERROR_MESSAGE); } catch (IOException e1) { // ... o di lavoro con i dati... ImageIcon icon = new ImageIcon("BaseFilm.jpg"); Img.setIcon(icon); showMessage("The service is unavailable.", "HTTP Error 503.", JOptionPane.ERROR_MESSAGE); } } return "Eseguito il codice!"; } } public void actionPerformed (ActionEvent e){ // ActionEvent Menu if (e.getSource() == Ric) { // Se Clicco la ricerca film ExecutorService executor = Executors.newSingleThreadExecutor(); Future<String> future = executor.submit(new Task()); try { System.out.println("Iniziato.."); System.out.println(future.get(1/2, TimeUnit.SECONDS)); // Tempo di vita del codice System.out.println("Finito in tempo!"); } catch (TimeoutException | InterruptedException | ExecutionException e1) { System.out.println("Terminato non in tempo!"); } executor.shutdownNow(); } }

Rispondi quotando