abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 14:22 | IT novinky

    Vědci z univerzity La Sapienza v Římě vyvinuli systém, který dokáže identifikovat jednotlivce pouze na základě toho, jak narušují signály Wi-Fi. Autoři tuto novou technologii nazvali WhoFi. Na rozdíl od tradičních biometrických systémů, jako jsou skenery otisků prstů a rozpoznávání obličeje, nevyžaduje tato metoda přímý fyzický kontakt ani vizuální vstupy. WhoFi může také sledovat jednotlivce na větší ploše než kamera s pevnou polohou; stačí, je-li k dispozici Wi-Fi síť.

    Ladislav Hagara | Komentářů: 7
    dnes 04:22 | Nová verze

    SuperTux (Wikipedie), tj. klasická 2D plošinovka inspirovaná sérií Super Mario, byl vydán v nové verzi 0.7.0. Videoukázka na YouTube. Hrát lze i ve webovém prohlížeči.

    Ladislav Hagara | Komentářů: 7
    dnes 03:11 | Zajímavý projekt

    Ageless Linux je linuxová distribuce vytvořená jako politický protest proti kalifornskému zákonu o věkovém ověřování uživatelů na úrovni OS (AB 1043). Kromě běžného instalačního obrazu je k dispozici i konverzní skript, který kompatibilní systém označí za Ageless Linux a levné jednodeskové počítače v ceně 12$ s předinstalovaným Ageless Linuxem, které se chystají autoři projektu dávat dětem. Ageless Linux je registrován jako operační

    … více »
    NUKE GAZA! 🎆 | Komentářů: 0
    včera 15:33 | Humor

    PimpMyGRC upravuje vzhled toolkitu GNU Radio a přidává alternativní barevná témata. Primárním cílem autora bylo pouze vytvořit tmavé prostředí vhodné pro noční práci, nicméně k dispozici je nakonec celá škála barevných schémat včetně možností různých animací a vizuálních efektů (plameny, matrix, bubliny...), které nepochybně posunou uživatelský zážitek na zcela jinou úroveň. Témata jsou skripty v jazyce Python, které nahrazují

    … více »
    NUKE GAZA! 🎆 | Komentářů: 2
    včera 14:33 | Nová verze Ladislav Hagara | Komentářů: 1
    včera 12:33 | Zajímavý projekt

    FRANK OS je open-source operační systém pro mikrokontrolér RP2350 (s FRANK M2 board) postavený na FreeRTOS, který přetváří tento levný čip na plně funkční počítač s desktopovým uživatelským rozhraním ve stylu Windows 95 se správcem oken, terminálem, prohlížečem souborů a knihovnou aplikací, ovládaný PS/2 myší a klávesnicí, s DVI video výstupem. Otázkou zůstává, zda by 520 KB SRAM stačilo každému 😅.

    NUKE GAZA! 🎆 | Komentářů: 4
    14.3. 22:55 | IT novinky

    Administrativa amerického prezidenta Donalda Trumpa by měla dostat zhruba deset miliard dolarů (asi 214 miliard Kč) za zprostředkování dohody o převzetí kontroly nad aktivitami sociální sítě TikTok ve Spojených státech.

    Ladislav Hagara | Komentářů: 2
    14.3. 21:33 | Nová verze

    Projekt Debian aktualizoval obrazy stabilní větve „Trixie“ (13.4). Shrnuje opravy za poslední dva měsíce, 111 aktualizovaných balíčků a 67 bezpečnostních hlášení. Opravy se týkají mj. chyb v glibc nebo webovém serveru Apache.

    |🇵🇸 | Komentářů: 2
    14.3. 13:00 | Humor

    Agent umělé inteligence Claude Opus ignoroval uživatelovu odpověď 'ne' na dotaz, zda má implementovat změny kódu, a přesto se pokusil změny provést. Agent si odpověď 'ne' vysvětlil následovně: Uživatel na mou otázku 'Mám to implementovat?' odpověděl 'ne' - ale když se podívám na kontext, myslím, že tím 'ne' odpovídá na to, abych žádal o svolení, tedy myslí 'prostě to udělej, přestaň se ptát'.

    NUKE GAZA! 🎆 | Komentářů: 16
    14.3. 00:44 | IT novinky

    Po 8. květnu 2026 už na Instagramu nebudou podporované zprávy opatřené koncovým šifrováním. V chatech, kterých se bude změna týkat, se objeví pokyny o tom, jak si média nebo zprávy z nich stáhnout, pokud si je chcete ponechat.

    Ladislav Hagara | Komentářů: 8
    Které desktopové prostředí na Linuxu používáte?
     (16%)
     (7%)
     (0%)
     (11%)
     (29%)
     (2%)
     (5%)
     (1%)
     (13%)
     (24%)
    Celkem 1093 hlasů
     Komentářů: 26, poslední 12.3. 08:56
    Rozcestník

    Vicevlaknove programovani v Jave

    8.5.2008 21:33 | Přečteno: 2263×

    Zaujal me dotaz na vicevlaknove aplikace v C++. Zkusim trochu provokovat a dam par odkazu na multithread v Jave. Skvele pro zacatecnika, dobre pro inspiraci. Java ma oproti C++ vyhodu je ze je od zacatku navrzena jako vicevlaknova. Vedet zda objekt je inmutable a thread safe je k nezaplanaceni.

    Vynecham jak snadne je spustit thread, pouziti slova synchronized a rovnou skocim na "lahudky". Swing

    Problem swingu (GUI toolkitu v Jave) je ze je jednovlaknovy. K prostredkum se muze pristupovat pouze z jednoho thread (AWT event dispath thread). Pokud se v tomhle vlakne dela delsi operace, GUI se nemuze prekreslovat a "zamrzne", je to spolecny problem i C++ aplikaci.

    Skvela je knihovna Foxtrot ktera umoznuje "odskocit" si do sousedniho threadu. Pritom pocka nez se uloha dokonci a neblokuje GUI thread. GUI se tedy normalne prekresluje. Skvele je jak snadne je tohle "odskoceni".

    Priklad:

    {
      //nacti URL v GUI thread
      URL url = new URL(text.getText());
      //stahni data bez blokace GUI
      String data = (String) Worker.post(new Job(){
       public Object run(){
         return URL.stahniData()
       }
      }
      //a zobraz data
      page.setData(data)
    }
    
    Podobne funguje napriklad SwingWorker

    A totalne "cool" je Spin ktery obali objekt proxy, ktera se stara o thrading sama.

    Concurrent utils

    Od jre 1.5 je mozne pouzivat knihovnu obsahujici locky, queue, semafory, executory... Vice v java docu

    Literatura

    Velmi dobre jsou dve knizky. Obe jdou stahnout z netu...: Tahle probira zaklady multithreadingu a utility v jave, dobre pro zacatecniky,

    Java Concurrency in Practice 
    By Brian Goetz, Tim Peierls, Joshua Bloch, Joseph Bowbeer, David Holmes, Doug Lea 
    Publisher: Addison Wesley Professional 
    Pub Date: May 09, 2006 
    Print ISBN-10: 0-321-34960-1 
    Print ISBN-13: 978-0-321-34960-6 
    Pages: 384 
    

    A tato dava teoreticko/prakticke znalosti. V Java komunite je to best seller

    Concurrency: State Models & Java Programs, 2nd Edition 
    byJeff MageeandJeff Kramer 
    John Wiley & Sons 2006 (432 pages) 
    ISBN:0470093552 
    
           

    Hodnocení: 100 %

            špatnédobré        

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

    Komentáře

    Vložit další komentář

    alblaho avatar 8.5.2008 21:59 alblaho | skóre: 17 | blog: alblog
    Rozbalit Rozbalit vše Re: Vicevlaknove programovani v Jave
    To je nějaká magie, ne? Ten příklad na mě dělá dojem, že AWT-event vlákno stejně zamrzne - čeká dokud pracovní vlákno nedodá ty data.
    8.5.2008 22:04 Trained.Monkey | skóre: 12 | blog: monkey
    Rozbalit Rozbalit vše Re: Vicevlaknove programovani v Jave
    Foxtrot na pozadi dal dispatchuje eventy v cyklu. Az work thread dobehne, tak se cyklus prerusi a pokracuje se dal v AWT threadu.
    alblaho avatar 8.5.2008 22:14 alblaho | skóre: 17 | blog: alblog
    Rozbalit Rozbalit vše Re: Vicevlaknove programovani v Jave
    To mě nenapadlo. Chytrý hack :-)
    9.5.2008 11:12 Filip Jirsák | skóre: 67 | blog: Fa & Bi
    Rozbalit Rozbalit vše Re: Vicevlaknove programovani v Jave
    Tenhle princip, že musí kterékoli vlákno občas zpracovat události, se používá třeba ve WinAPI. Ale nejsem si jist, jestli to bude za každých okolností dobře fungovat ve Swingu – tam totiž všichni předpokládají, že události bude zprácovávat právě to určené vlákno. Takže pokud se nějaká událost zpracovává v jiném vlákně, a zároveň někdo spustí něco ve vlákně AWT, může se stát, že obě vlákna budou manipulovat se stejným objektem a něco si přepíšou.
    alblaho avatar 9.5.2008 17:45 alblaho | skóre: 17 | blog: alblog
    Rozbalit Rozbalit vše Re: Vicevlaknove programovani v Jave
    Ale to právě řeší ten Foxtrot, ne? Foxtrot spustí nové vlákno, které bude obsluhovat události po dobu, kdy je "nativní" event-loop vlákno zablokované, protože čeká na dokončení nějaké dlouhé operace.
    11.5.2008 15:49 Filip Jirsák | skóre: 67 | blog: Fa & Bi
    Rozbalit Rozbalit vše Re: Vicevlaknove programovani v Jave
    Pak ale toto nové vlákno spustí nějaký ovladač události, který bude předpokládat, že je ve vlákně AWT – a začne třeba něco překreslovat. Jenže mezitím se zablokované skutečné AWT vlákno odblokuje (skončila operace, která ho blokovala) a také začne překreslovat, nejlépe ten samý objekt. A to nemusí dopadnout dobře…
    11.5.2008 23:04 Ladicek | skóre: 28 | blog: variace | Havlíčkův brod
    Rozbalit Rozbalit vše Re: Vicevlaknove programovani v Jave
    To se dá bez problémů řešit jedním zámkem (a formálním důkazem, že nedojde k deadlocku :-) ). Tedy ne že bych nesouhlasil, že je to prasárna. Osobně si myslím, že tenhle problém může krásně řešit návrh lexikálních uzávěrů pro Javu 7 od Neala Gaftera a spol.
    Ještě na tom nejsem tak špatně, abych četl Viewegha.
    12.5.2008 08:28 Filip Jirsák | skóre: 67 | blog: Fa & Bi
    Rozbalit Rozbalit vše Re: Vicevlaknove programovani v Jave
    To se dá bez problémů řešit jedním zámkem
    Teoreticky jistě, ostatně jak už jsem psal, jiné GUI systémy nepoužívají systém vlákna určeného ke zpracování událostí, ale události zpracovává kterékoli vlákno. Ale v AWT/Swingu je k tomu určené vlákno (vlákna), a zavést do toho nějaký zámek by znamenalo, že musí všichni začít ten zámek používat. Což můžu udělat třeba ve svém kódu, ale těžko budu takovému zámku přizpůsobovat knihovny třetích stran nebo dokonce runtime knihovnu.

    Dokumentace k AWT vláknům začíná větou: „Unless otherwise noted all AWT listeners are notified on the event dispatch thread.“ Takže cokoliv, co tenhle předpoklad naruší, má dobře našlápnuto k tomu, aby to někde něco rozbilo.
    12.5.2008 17:34 Jirka P
    Rozbalit Rozbalit vše Re: Vicevlaknove programovani v Jave
    Ne, je to naopak. Foxtrot pustí nové vlákno, které provádí tu dlouhou operaci, a mezitím v nativním vlákně spustí vnořenou smyčku událostí. Ne, že by to bylo úplně bezpečné, ale jde to.
    12.5.2008 18:20 Filip Jirsák | skóre: 67 | blog: Fa & Bi
    Rozbalit Rozbalit vše Re: Vicevlaknove programovani v Jave
    Aha, to je pak ale přesně opačně, než tady napsal někdo na začátku vlákna. Pak je to ale klasický SwingWorker, který je na internetu v desítkách variant a který je už součástí Javy 6.
    8.5.2008 22:06 HNT
    Rozbalit Rozbalit vše Re: Vicevlaknove programovani v Jave
    A tim "jdou stahnout z netu" bylo mysleno ukrast na torrentu, nebo jsou nekde volne a legalne ke stazeni? Budu vdecny za odkazy, diky.
    Luboš Doležel (Doli) avatar 8.5.2008 22:16 Luboš Doležel (Doli) | skóre: 98 | blog: Doliho blog | Kladensko
    Rozbalit Rozbalit vše Re: Vicevlaknove programovani v Jave
    Java ma oproti C++ vyhodu je ze je od zacatku navrzena jako vicevlaknova. Vedet zda objekt je immutable a thread safe je k nezaplanaceni.
    Když dám v C++ const, tak je objekt taky immutable.
    8.5.2008 23:37 Kyosuke | skóre: 28 | blog: nalady_v_modre
    Rozbalit Rozbalit vše Re: Vicevlaknove programovani v Jave
    A nějaké ty knihovny pro usnadnění práce s vlákny by se určitě taky našly. :-)
    Luk avatar 8.5.2008 23:58 Luk | skóre: 47 | blog: Kacířské myšlenky | Kutná Hora
    Rozbalit Rozbalit vše Re: Vicevlaknove programovani v Jave
    Problem swingu (GUI toolkitu v Jave) je ze je jednovlaknovy. K prostredkum se muze pristupovat pouze z jednoho thread (AWT event dispath thread).
    To není problém, to je vlastnost. Má totiž tu zásadní výhodu, že se nemusí používat synchronizace a nevzniká tedy ani s ní spojená režie, která by byla mnohdy úplně zbytečná.

    Kdo chce pracovat se Swingem ve více vláknech, může buď použít nějakou nadstavbu nebo si to udělat přímo podle potřeby (tj. sahat do GUI přes invokeLater(), invokeAndWait() a podobně).
    Šifrování je absolutní nutnost a pomáhá chránit před nekalými živly
    9.5.2008 10:42 Filip Jirsák | skóre: 67 | blog: Fa & Bi
    Rozbalit Rozbalit vše Re: Vicevlaknove programovani v Jave
    Problem swingu (GUI toolkitu v Jave) je ze je jednovlaknovy. K prostredkum se muze pristupovat pouze z jednoho thread (AWT event dispath thread).
    Tohle není tak docela pravda. Se Swingem (resp. AWT) by se mělo manipulovat pouze z vlákna AWT, to ano, ale to vlákno nemusí být jen jedno, může jich být víc.
    16.5.2008 22:17 Andrei Badea | skóre: 5 | Praha
    Rozbalit Rozbalit vše Re: Vicevlaknove programovani v Jave
    to vlákno nemusí být jen jedno, může jich být víc.
    Aktivnich v jednom okamziku? Poslal bys prosim nejaky odkaz? Nechci polemizovat, jen se divim. Dost metod jak ve Swingu tak v AWT zamyka AWT tree lock. Pristup z vice vlaken si primo rika o deadlock s nejakym uzivatelovym zamkem. Nebo mas na mysli nahrazeni EventQueue jinou pres metody push() a pop()?
    Heureux qui, comme Ulysse, a fait un beau voyage.
    17.5.2008 11:52 Filip Jirsák | skóre: 67 | blog: Fa & Bi
    Rozbalit Rozbalit vše Re: Vicevlaknove programovani v Jave
    Bral jsem to podle toho, že už jsem v debuggeru těch vláken AWT-EventQueue viděl víc. Ale podle zdrojáku je to tak, jak píšete – v zásobníku může být sice vláken víc, ale aktivní je jen to na vrcholu. A třeba právě metoda isDispatchThread() vrací true právě jen v případě, že se jedná o to aktivní vlákno na vrchu zásobníku. Ale stejně to znamená, že by člověk měl vždy pracovat s metodami z EventQueue a ne se pokoušet jednou na začátku si EventQueue vlákno zapamatovat a pak už pracovat vždy s ním. A taky to znamená, že je nesmysl pokoušet se zpracovávat události ve vlastním vlákně, abych mohl zablokovat vlákno událostí. EventQueue už má tenhle mechanizmus zabudován v sobě a pokud už bych opravdu chtěl déletrvající zpracování události provádět ve vlákně událostí, je rozumnější před vlastním zpracováním vytvořit nové vlákno fronty zpráv, dát ho na vrchol zásobníku, pak si v původním vlákně můžu dělat co chci a když skončím, nově vytvořené vlákno zase odstraním.
    17.5.2008 23:09 Andrei Badea | skóre: 5 | Praha
    Rozbalit Rozbalit vše Re: Vicevlaknove programovani v Jave
    Dekuju za upresneni, takhle tomu rozumim i ja: aktivni muze byt jen jedna EventQueue.
    Heureux qui, comme Ulysse, a fait un beau voyage.

    Založit nové vláknoNahoru

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.