Avatar
buycry
Člen
Avatar
buycry:

Ahoj máte někdo zkušenosti jak uspat v FXku vlákno. Zkoušel jsem to přes TimerTask potom jsem na netu našel že by to mělo jít pomocí Application.in­vokeAndWait(); /*uspí se vlákno aplikace a provedou se následující příkazy*/
Bohužel ani jedno mi nefungovalo.
Jediné co mi funguje je prasárna kterou mám v tom programu abych viděl že ta metoda dělá co má.
Mám mainStage a potom vytvářím transparentní pauseStage kde volám metodu showAndWait(); /*zobrazí a počká než se okno zavře takže uspí mainStage*/
Ale bohužel při sekvenci několika kroků těsně za sebou (v podstatě animace) se mi přepíná focus na tu transparentní pauseStage takže ve výsledku mainStage se stává blikající okno (blikají okraje) a to nechci.
Nevíte někdo co s tím?
dík

 
Odpovědět 29.9.2014 8:11
Avatar
Matěj Kripner
Redaktor
Avatar
Odpovídá na buycry
Matěj Kripner:

Nevím, jestli je zrovna vhodné pokoušet se uspat FX-vlákno. To se stará o refreshing okna a nějaká logika by měla být v jiném vlákně. Nicméně pokud chceš uspání na danou dobu, zkus metodu Thread.sleep(), která uspí vlákno ze kterého je volána na daný počet milisekund. Jinak poslouží metoda wait.

Editováno 29.9.2014 18:37
Nahoru Odpovědět 29.9.2014 18:35
"We reject kings, presidents and voting. We believe in rough consensus and running code" David Clark
Avatar
buycry
Člen
Avatar
Odpovídá na Matěj Kripner
buycry:

Thread.sleep(); jsem zkoušel a myslím že to vyhodilo RuntimeExeption.
Myslíš stage.wait()? Nejsem si ale asi jsem to zkoušel taky. Zítra ještě jednou zkusim obě možnosti co mi radíš a pak napíšu jak jsem dopadl.

 
Nahoru Odpovědět 29.9.2014 23:48
Avatar
Matěj Kripner
Redaktor
Avatar
Odpovídá na buycry
Matěj Kripner:

Metodu wait nevoláš na instanci stage, ale na monitoru FX vlákna. Toto není záležitost tříd, ale vláken. Teď nejsem u pc, potom uvedu příklad.

Nahoru Odpovědět 30.9.2014 14:02
"We reject kings, presidents and voting. We believe in rough consensus and running code" David Clark
Avatar
Matěj Kripner
Redaktor
Avatar
Odpovídá na buycry
Matěj Kripner:

Znovu upozorňuju, že uspávat FX vlákno není nejlepší nápad. Abych ale vysvětlil poslední příspěvek:
Monitor je objekt řídící synchronizaci vláken. Často se přirovnává ke krabičce, do níž se vejde právě jedno vlákno. A pouze vlákno, které monitor vlastní(které je právě v krabičce) může vykonávat synchronizované metody monitoru, nebo synchronizované bloky kódu využívající tento monitor. Např. tento kód:

synchronized(objekt) {
    System.out.println("V bloku synchronized");
}

Pokud vlákno na tento kód narazí, bude čekat, dokud objekt s názvem "objekt" nebude volný (dokud bude používán jinými vlákny jako monitor). Poté vstoupí do bloku synchronized a zabere si monitor pro sebe. Pokud jiné vlákno v tu dobu narazí na jakýkoliv blok synchronized vedený tím samým monitorem("ob­jekt"), bude čekat, dokud toto vlákno nevystoupí ze svého bloku a uvolní monitor.
A vtip je v tom, že pomocí monitoru mohou vlákna, která ho používají navzájem komunikovat. Teď pozor - Pokud vlákno v synchronizovaném bloku zavolá metodu wait() na tom monitoru, který blok synchronized využívá, bude čekat do té doby, než jiné vlákno vstoupí do synchronized bloku s tím samým monitorem a na tom samém monitoru zavolá metodu notify() nebo notifyAll(). To probudí první vlákno, které může vesele pokračovat ve své činnosti.
Ve skutečnosti je to trochu složitější a je potřeba si dávat bacha na různé věci, ale tohle by mělo stačit :)

Nahoru Odpovědět 30.9.2014 16:39
"We reject kings, presidents and voting. We believe in rough consensus and running code" David Clark
Avatar
buycry
Člen
Avatar
Odpovídá na Matěj Kripner
buycry:

Děkuju tohle by mohlo vyřešit můj problém. Zítra se k tomu konečně dostanu tak napíšu. S tím synchronized jsem nikdy nepracoval tak se něco nového i přiučím :)

 
Nahoru Odpovědět 30.9.2014 20:31
Avatar
Matěj Kripner
Redaktor
Avatar
Nahoru Odpovědět 5.10.2014 17:40
"We reject kings, presidents and voting. We believe in rough consensus and running code" David Clark
Avatar
buycry
Člen
Avatar
Odpovídá na Matěj Kripner
buycry:

Bohužel počítač mi odešel díky zkratu do křemíkového nebe takže teď mám nový a ještě jsem se k tomu nedostal....do konce týdne se snad dostanu k tomu abych to stáhl z gitu a pak napíšu

 
Nahoru Odpovědět 7.10.2014 19:07
Avatar
buycry
Člen
Avatar
Odpovídá na Matěj Kripner
buycry:

Bohužel počítač mi odešel díky zkratu do křemíkového nebe takže teď mám nový a ještě jsem se k tomu nedostal....do konce týdne se snad dostanu k tomu abych to stáhl z gitu a pak napíšu

 
Nahoru Odpovědět 7.10.2014 19:07
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 9 zpráv z 9.