Portál AbcLinuxu, 18. listopadu 2025 17:18
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.