Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze – Lekce 1 - Multithreading v Javě

Zpět

Upozorňujeme, že diskuze pod našimi online kurzy jsou nemoderované a primárně slouží k získávání zpětné vazby pro budoucí vylepšení kurzů. Pro studenty našich rekvalifikačních kurzů nabízíme možnost přímého kontaktu s lektory a studijním referentem pro osobní konzultace a podporu v rámci jejich studia. Toto je exkluzivní služba, která zajišťuje kvalitní a cílenou pomoc v případě jakýchkoli dotazů nebo projektů.

Komentáře
Avatar
Zakk
Člen
Avatar
Zakk:28.10.2018 16:40

To s těma lambdama jsem asi uplně nepobral, ale kdybych chtěl vytvářet vlákna pomocí implementace Runnable, tak bych to udělal asi nějak takhle.

//
public class ObjektRunnable implements Runnable {
        String jmeno;

        public ObjektRunnable(String jmeno) {
                this.jmeno = jmeno;
        }

        @Override
        public void run() {
                System.out.println("Vlákno " + jmeno + " spuštěno");
                for (int i = 0; i < 4; ++i) {
                        System.out.println("Vlákno " + jmeno + ": " + i);
                        try {
                                Thread.sleep(500);
                        } catch (InterruptedException ex) {
                                System.out.println("Vlákno " + jmeno + " přerušeno");
                                return;
                        }
                }
                System.out.println("Vlákno " + jmeno + " ukončeno");

        }

}

=============================================

public class HlavniProgram {

        public static void main(String[] args) {
                ObjektRunnable spustitelnyObjekt1 = new ObjektRunnable("prvni");
                ObjektRunnable spustitelnyObjekt2 = new ObjektRunnable("druhe");
                Thread prvniVlakno = new Thread(spustitelnyObjekt1);
                Thread druheVlakno = new Thread(spustitelnyObjekt2);
                prvniVlakno.start();
                druheVlakno.start();

        }

}
 
Odpovědět
28.10.2018 16:40
Avatar
Adam Bucher
Člen
Avatar
Adam Bucher:12.10.2019 16:40

Metodu getName() bohužel v lambda výrazu uvnitř main() volat nelze.
pocitac770 navrhoval použít mojeVlakno.get­Name(), u toho případu ale zase Javě vadí, že proměnná mojeVlakno nemusela být inicializována.
Lze tedy nějakým způsobem volat metodu getName() třídy Thread uvnitř zdejšího tutoriálového lambda výrazu ve statické metodě main()?

 
Odpovědět
12.10.2019 16:40
Avatar
Petr Svoboda
Člen
Avatar
Odpovídá na Adam Bucher
Petr Svoboda:14.7.2022 22:00

Lze tedy nějakým způsobem volat metodu getName() třídy Thread uvnitř ...

Samozřejmě, že nelze. Že se itnetwork nestydí :-( Že je ve cvičeních plno chyb, už jsem jsi zvyknul. Ale prásknout neodzkoušený nesmyslný kód do kurzu, do konce do 1. lekce, to je nový level.

Když píšeš implementaci Runnable, tak nemáš přístup k metodám tříd, ve kterých bude Runnable případně použit jako argument.

 
Odpovědět
14.7.2022 22:00
Avatar
Jan Krupa
Člen
Avatar
Jan Krupa:24.8.2023 20:22

Jsou tu pěkně vysvětlené ty lambda výrazy, ale ten poslední kód skutečně nefunguje.

 
Odpovědět
24.8.2023 20:22
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 4 zpráv z 14.