Omlouvám se, jestli mi něco uniká. Ale to opravdu voláte SQL příkazy jako obsluhu událostí v hlavním threadu? Protože pokud ano, pak celé GUI "vytuhne" (včetně překreslování) do doby, než SQL doběhne. Což bývá jedna z nejčastějších chyb a důvod pro tvrzení "Java gui je pomalé".
Nerozumím větě. Je postavená stylem "IBM koupilo HP".
Tvrdíte, že SQL operace způsobí vytuhnutí GUI bez ohledu na to, zda Java GUI je pomalé nebo ne? To by byla pravda, proto se SQL operace nemají dělat v EventDispatchThreadu.
Nebo tvrdíte, že GUI Javy je pomalé i bez špatného použití SQL? Protože to je pravda jen napůl. S SQL v hlavním threadu rázem místo odezvy v řádu stovek milisekund máte odezvu v řádu sekund, někdy i minut, během kterých "aplikace neodpovídá", nefunguje klávesnice a nejde klikat. A to už je dost velký rozdíl oproti "obvyklé pomalosti".
Speciálně pro Vás ještě jednou: Java GUI je pomalé i když aplikace vůbec nepracuje s DB.
Zablokování hlavního vlákna SQL dotazem příliš nevadí, protože v tu dobu obvykle uživatel nemá kam klikat a kam co psát, mohl by si nanejvýš šoupat oknem. Můžete to samozřejmě dát do samostatného vlákna a v hlavním vlákně mezitím animovat teploměr, na výsledku to nic nezmění.
Muze pouzivat vsechny casti UI, ktere nezaviseji na te operaci? Muze ji zrusit? Muze resizovat okno a jeho obsah se mu presklada na novou velikost?
Hele, jak se pouzivaji thready v awt, swingu.. to je yu tohohle tematu zaklad. Muzes si o tom precist tady: https://docs.oracle.com/javase/tutorial/uiswing/concurrency/index.html
No a dostáváme se k tomu, že v DB aplikacích takové části nebývají. Dovolit zahájit uživateli paralelně další SQL se přímo zakazuje. Zrušit operaci se povoluje jenom v odůvodněných případech, tam je to jasný případ na vlákna.
Technické záležitosti jsou mi jasné, jen mě zajímalo jaké moudro se dozvím :-)
Ako vy implementujete taketo operacie v jave?
Lebo:
Spustite si SQL v main threade.
Nech to rata par sekund.
Nech to vytuhne.
Kedze vam to bezi, ani neprekreslite teplomer
O chvilu mate sive okno.
Alebo ho ani nezavriete.
To iste vypustite network query kde mate velku latenciu.
Teraz co?
sql operacie v main threade su v clankoch vo velkom cervenom ramceku
java gui by bolo dost rychle keby sa nedialo toto
btw v androide vam aplikacia co robi i/o v hlavnom threade zdochne rovno pri spusteni aby vam vysvetlila ze to sa nerobi
inak serial sa zlepsuje. lebo sa v nom neprogramuje az tolko