Portál AbcLinuxu, 12. května 2025 12:33
Dobry den, muze mi prosim nekdo vysvetlit, proc se nasledujici program neukonci a zustane viset v konzoli?
import java.util.concurrent.Executor; import java.util.concurrent.Executors; public class Main { public static void main(String[] args) { int NTHREADS = 10; Executor exec = Executors.newFixedThreadPool(NTHREADS); //Executor exec = Executors.newSingleThreadExecutor(); // requests are executed one by one for (int i = 0; i < 100; i++) { final int index = i; Runnable requestHandler = new Runnable() { public void run() { System.out.println(index+""); } }; exec.execute(requestHandler); } } }
import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; public class Main { public static void main(String[] args) { int NTHREADS = 10; ExecutorService exec = Executors.newFixedThreadPool(NTHREADS); for (int i = 0; i < 100; i++) { final int index = i; Runnable requestHandler = new Runnable() { public void run() { System.out.println(index+""); } }; exec.execute(requestHandler); } exec.shutdown(); System.out.println("exit"); } }
Ano, toto reseni me take napadlo, znamena to tedy, ze samotny interface Executor je nepouzitelny (~program nezastavi) a pro takovou predpokladanou funkci jako je ukonceni programu musim pouzit ExecuterService? K cemu je potom samotny Executor?
Můžeš použít i interface Executor, ale na konci programu musíš zavolat:
System.exit(0);
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.