Memtest86+ (Wikipedie), svobodný nástroj pro kontrolu operační paměti, byl vydán ve verzi 9.00. S podporou architektury AArch64 (ARM64).
Společnost Fairphone stojící za stejnojmennými mobilními telefony představila (pdf) bezdrátová špuntová sluchátka Fairbuds 2. Opravitelná, s vyměnitelnými bateriemi a tříletou zárukou. Cena 119 eur.
O víkendu 17. a 18. října lze na brněnském výstavišti navštívit s jednou vstupenkou dvě akce: Maker Faire Brno, festival inovací, kreativity a kutilství, a GameDev Connect, akci určenou pro všechny současné a hlavně budoucí herní vývojáře.
Canonical vydal (email) Ubuntu 26.10 Stonking Stingray. Přehled novinek v poznámkách k vydání. Jedná se o průběžné vydání s podporou 9 měsíců, tj. do července 2027.
České Radiokomunikace (CRA) ve čtvrtek odstřelily rozhlasový vysílač Liblice B, dosud nejvyšší stavbu v Česku. O demolici dvou 355 metrů vysokých stožárů rozhodly z důvodu jejich nevyužívání, už v úterý přitom zhasly a demontovaly jejich osvětlení.
Microsoft Defender nově podporuje linuxové desktopy.
Oficiální Epic Games Launcher je v nové preview verzi poprvé dostupný i pro Linux (FAQ). Pracuje se na novém Easy Anti-Cheatu pro Linux (EAC Linux v2) a podpoře hry Fortnite na Linuxu.
Desktopové prostředí KDE Plasma bylo vydáno ve verzi 6.8. Novinky zahrnují lepší podporu vzdálené plochy, sdílení a nahrávání obrazovky a řadu drobností napříč uživatelským rozhraním (úplný seznam změn, shrnutí ve wiki).
Apple představil 7palcový displej Apple HomeView s podporou Apple Intelligence a Siri AI pro ovládání chytré domácnosti, novou řadu vybavení chytré domácnosti Apple Home Collection, další generaci HomePodu mini a novou Apple TV 4K. Apple HomeView není v Evropské unii v prodeji, jelikož umělá inteligence Siri v rámci systému iOS v EU momentálně není k dispozici. Apple spolupracuje s EU a snaží se najít cestu, jak situaci vyřešit.
KDE slaví 30 let. Přesně před 30 lety, 14. října 1996, poslal Matthias Ettrich do diskusní skupiny comp.os.linux.misc zprávu, která započala historii projektu KDE. Důležité milníky jsou zobrazeny na časové ose.
public class SVG {
private static final SVG INSTANCE = new SVG();
private SVGGraphics2D svg;
private SVG() {
DOMImplementation domImpl =
GenericDOMImplementation.getDOMImplementation();
String svgNS = "http://www.w3.org/2000/svg";
Document document = domImpl.createDocument(svgNS, "svg", null);
svg = new SVGGraphics2D(document);
System.out.println("hello");
}
public static SVG getInstance() {
return INSTANCE;
}
public SVGGraphics2D getSVG() {
return svg;
}
}
Keď ale zavolám Graphics2D g2d = SVG.getInstance().getSVG(), dostanem null. Viete mi poradiť?
Řešení dotazu:
null dostával – můžete z jednoho vlákna volat getSVG() dřív, než v druhém vlákně doběhne konstruktor. Pak by bylo potřeba použít synchronizaci.
synchronized (A.class) { ... }), a synchronizovaný blok má bariéru na začátku i na konci. Zkusil jsem si to najít a ve třetím vydání JLS je to v kapitole 12.4.2.
Inicializace tridy muze probehnout pouze v jednom vlakne, viz specifikace.To máte pravdu, ale to neříká vůbec nic o tom, co v tu chvíli mohou nebo nemohou dělat jiná vlákna.
S zadnymi pametovymi barierami to nesouvisi.Ale souvisí, jedině díky paměťovým bariérám to probíhá tak, jak psal Jehovista a Ladicek. Každá třída má příznak, zda právě probíhá inicializace, a přístup k tomuto příznaku je synchronizován. Takže na konci inicializace třídy musí nejprve doběhnout všechny části inicializace i z pohledu jiných vláken (a jiných procesorů), teprve pak může být získán zámek a zrušen příznak, že probíhá inicializace. Pokud během inicializace jiné vlákno chce třídu inicializovat, zjistí podle příznaku, že už inicializaci provádí jiné vlákno, a čeká na její dokončení (opět přes
wait(), takže je tam paměťová bariéra).
V tomto konkretnim pripade nemuze getInstance nikdy vratit null, protoze metoda se muze zavolat az po inicializaci, ve ktere se do promenne INSTANCE prirazuje vysledek volani new, ktery nemuze byt nikdy null.To zjevně není pravda – během inicializace se volá metoda-konstruktor, s jejím voláním nemůžete čekat, než proběhne celá inicializace a tedy zároveň proběhne celá tato metoda. Pokud by se vám konstruktor nezdál jako typický příklad metody, představte si volání
SVG.getInstance() v rámci volání toho konstruktoru.
Tiskni
Sdílej: