Rozdíl mezi Task a RunLater - vytvoření dialogu v JFx – Java – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Rozdíl mezi Task a RunLater - vytvoření dialogu v JFx – Java – Fórum – Programujte.comRozdíl mezi Task a RunLater - vytvoření dialogu v JFx – Java – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
GoliathL0
Newbie
4. 3. 2015   #1
-
0
-

Zdravím, 

potřeboval bych poradit, jaky je rozdíl mezi Task a runLater v případě, že se snažím zavolat konstruktor dialogu. 

Thread WatchThr = new Thread (new Runnable(){ 
         @Override
         public void run (){   
         while (true){
             synchronized (UpominkyLogic.mapaUpominek){
                try{
                   UpominkyLogic.mapaUpominek.wait();
                }catch (InterruptedException AF){}


                //dosud se ceka na notify z jineho vlakna


                javafx.application.Platform.runLater(new Runnable (){
                    public void run (){
                 new ErrorDialog (primaryStage, true, UpominkyLogic.message); //boolean je pro zvukovy signal
                    }
                });
             }
         }
     }     
     });
     WatchThr.setDaemon(true);
     WatchThr.start();

Druhý kód to pak řeší elegantněji, ale ve chvíli, kdy by měl vytvořit dialog, se celý ukončí (měl by jet dokud neskončí aplikace):

Task<Void> WatchThr = new Task<Void> (){
         @Override
         public Void call (){     
           while (true){
             synchronized (UpominkyLogic.mapaUpominek){
                 try{
                     UpominkyLogic.mapaUpominek.wait();
                 }catch (InterruptedException AG){}
                 
                 new ErrorDialog (primaryStage, true, UpominkyLogic.message);
             }  
           } 
         }
     };

     Thread UpominkaDialog = new Thread (WatchThr);
     UpominkaDialog.setDaemon(true);
     UpominkaDialog.start();

Myslel jsem si, že Task využívá právě metody RunLater, aby měl přístup k prostředkům UI a mohl do něj "šahat" . Proč se tedy vlákno v druhém případě ukončí aniž by vyvolalo dialog ? 
 

Nahlásit jako SPAM
IP: 89.102.251.–
Reklama
Reklama
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 61 hostů

Podobná vlákna

Rozdíl mezi == a is — založil Ahoj3

Rozdíl mezi C, C++ a C# — založil Murmand

Rozdil mezi class a id — založil Václav Žitek

Rozdíl mezi zápisy — založil Tomas

Rozdil mezi endl a \n — založil MyName

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý