Portál AbcLinuxu, 12. května 2025 12:33

Dotaz: Java - Execute a zastaveni programu

30.7.2009 12:15 Mitrix
Java - Execute a zastaveni programu
Přečteno: 1154×
Odpovědět | Admin

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);
        }
    }
}
Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

Fuky avatar 30.7.2009 12:49 Fuky | skóre: 52 | blog: 4u
Rozbalit Rozbalit vše Re: Java - Execute a zastaveni programu
Odpovědět | | Sbalit | Link | Blokovat | Admin

Paralelní běh pod kontrolou.

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");
    }
}

-- RÁMO: psí tábor , ETriatlon: Výuka plavání
30.7.2009 13:13 Mitrix
Rozbalit Rozbalit vše Re: Java - Execute a zastaveni programu

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?

Fuky avatar 30.7.2009 13:35 Fuky | skóre: 52 | blog: 4u
Rozbalit Rozbalit vše Re: Java - Execute a zastaveni programu

Můžeš použít i interface Executor, ale na konci programu musíš zavolat:

System.exit(0);

30.7.2009 13:03 cronin | skóre: 49
Rozbalit Rozbalit vše Re: Java - Execute a zastaveni programu
Odpovědět | | Sbalit | Link | Blokovat | Admin
Thread pool interne obsahuje vlakna, ktore nie su demonmi a teda JVM caka na ich dokoncenie. Tieto ale neskoncia, dokial sa nezavola shutdown() nad tym poolom, ako bolo naznacene vyssie. Pozri dokumentaciu k Thread.setDaemon().

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.