Fazendo Threads Chamados como Daemon
Como posso fazer um thread de Callable como thread daemon?
Aqui está o que estou tentando. Eu estou tentando executar um conjunto de segmentos dos quais um deles não é concluído e entra em loop infinito. O que ele faz é que o thread principal do programa não termina mesmo que todas as instruções de código sejam executadas. O thread principal entra em modo suspenso depois disso.
Aqui está o trecho de código para o mesmo.
<code>public class MyThread implements Callable<String> { private int value; public MyThread(int value) { this.value = value; } @Override public String call() throws Exception { //Thread.currentThread().setDaemon(true); System.out.println("Executing - " + value); if (value == 4) { for (; ; ); } return value + ""; } } </code>
Programa principal
<code>public class ExecutorMain { public static String testing() { ExecutorService executor = null; List<Future<String>> result = null; String parsedValue = null; try { executor = Executors.newSingleThreadExecutor(); List<MyThread> threads = new ArrayList<MyThread>(); for (int i = 1; i < 10; i++) { MyThread obj = new MyThread(i); threads.add(obj); } result = executor.invokeAll(threads, Long.valueOf("4000"), TimeUnit.MILLISECONDS); //result = executor.invokeAll(threads); for (Future<String> f : result) { try { parsedValue = f.get(); System.out.println("Return Value - " + parsedValue); } catch (CancellationException e) { System.out.println("Cancelled"); parsedValue = ""; f.cancel(true); } } executor.shutdownNow(); } catch (Exception e) { System.out.println("Exception while running threads"); e.printStackTrace(); } finally { List executedThreads = executor.shutdownNow(); System.out.println(executedThreads); for (Object o : executedThreads) { System.out.println(o.getClass()); } } System.out.println("Exiting...."); //System.exit(1); return ""; } public static void main(String[] args) { testing(); } } </code>
O que eu entendi da minha pergunta anterior sobreTópicos pendentes em Java é que eu tenho que fazer meus threads como threads daemon.