CodeGym
AI Academy
Promozione
CodeGym University
Learning
Corsi
Tasks
Surveys & Quizzes
Games
Help
Schedule
Community
Users
Forum
Chat
Articles
Success stories
Activity
Reviews
Subscriptions
Tema chiaro

Lezioni

  • Recensioni
  • Chi siamo
Inizia
Inizia a imparare
Start learning now
  • I miei progressi
  • Corsi
  • Mappa Quest
  • Lezioni
  • Structured Concurrency

    JAVA 25 SELF
    Livello 58,Lezione 0
    Structured Concurrency trasforma un insieme caotico di thread in una gerarchia di task controllata: avvii sottoattività in thread virtuali all’interno di StructuredTaskScope, aspetti il loro completamento tramite join(), gestisci gli errori in modo centralizzato con throwIfFailed() e ottieni i risultati con resultNow()/ result(). Analizzeremo le politiche di terminazione ShutdownOnFailure e ShutdownOnSuccess, le confronteremo con CompletableFuture, vedremo esempi di un aggregatore HTTP ed errori tipici nell’uso della concorrenza strutturata.
    Disponibile
  • Annullamento dei task e timeout attraverso lo stack

    JAVA 25 SELF
    Livello 58,Lezione 1
    Come annullare correttamente operazioni lunghe e bloccanti in Java: interruzione cooperativa tramite Thread.interrupt(), annullamento dei task tramite Future.cancel() e comportamento di CancellationException, timeout e annullamento in CompletableFuture ( orTimeout, completeOnTimeout), concorrenza strutturata con StructuredTaskScope, deadline globale (time‑budget) e propagazione dei timeout verso il basso nello stack (inclusi Instant/ Duration e Scoped Values). Analizziamo la pratica con I/O bloccante e gli errori tipici.
    Disponibile
  • Sincronizzatori di alto livello

    JAVA 25 SELF
    Livello 58,Lezione 2
    Nella lezione analizziamo i sincronizzatori di alto livello di java.util.concurrent: CountDownLatch, CyclicBarrier, Phaser e Exchanger. Impariamo a coordinare l'avvio e la conclusione dei task tramite await()/ countDown(), a costruire fasi riutilizzabili e azioni di barriera con await(), a gestire partecipanti dinamici dell'«orchestra» con register()/ arriveAndAwaitAdvance()/ arriveAndDeregister() e a scambiarci dati a coppie tramite exchange(). In pratica realizzeremo una partenza di massa dei worker e il «tick» di gioco, e vedremo anche gli errori tipici: la natura monouso di CountDownLatch, la gestione di BrokenBarrierException e un deregister() corretto. Ovunque, senza il dolore di wait()/ notify().
    Disponibile
  • StampedLock e contatori a bassa contesa

    JAVA 25 SELF
    Livello 58,Lezione 3
    Quando ReentrantReadWriteLock e il classico ReadWriteLock iniziano ad arrancare sotto carico elevato, viene in aiuto StampedLock con la lettura ottimistica: la coppia tryOptimisticRead + validate offre letture quasi «gratuite» quando le scritture sono rare. Analizzeremo le modalità di lock, il lavoro con gli «stamp», le limitazioni di reentrancy, confronteremo con ReentrantReadWriteLock, e vedremo anche i contatori a bassa contesa — LongAdder e LongAccumulator — e perché superano AtomicLong in presenza di concorrenza. Concluderemo con la pratica: cache con prevalenza di lettura e un mini‑benchmark.
    Disponibile
  • Java Memory Model (JMM)

    JAVA 25 SELF
    Livello 58,Lezione 4
    Analizziamo le regole di visibilità e ordinamento delle operazioni nel Java Memory Model: cosa significa la relazione happens-before, come e quando aiutano volatile, synchronized, i campi final ( final), e perché senza di essi compaiono dati «non aggiornati». Mostreremo la pubblicazione sicura degli oggetti, il double-checked locking corretto, l’accesso a basso livello tramite VarHandle, l’impatto del false sharing e l’annotazione @Contended, nonché note pratiche su Thread.start()/ Thread.join(), Future.get() e i microbenchmark JMH.
    Disponibile
Learn
  • Registration
  • Java Course
  • Help with Tasks
  • Pricing
  • Java Syntax
Community
  • Users
  • Articles
  • Forum
  • Chat
  • Success Stories
  • Activity
  • Affiliate Program
Company
  • About us
  • Contacts
  • Reviews
  • Press Room
  • CodeGym for EDU
  • FAQ
  • Support
CodeGymCodeGym is an online course for learning Java programming from scratch. This course is a perfect way to master Java for beginners. It contains 1200+ tasks with instant verification and an essential scope of Java fundamentals theory. To help you succeed in education, we’ve implemented a set of motivational features: quizzes, coding projects, content about efficient learning, and a Java developer’s career.
Follow us
Lingua dell'interfaccia
English Deutsch Español हिन्दी Français Português Polski বাংলা 简体中文 मराठी தமிழ்
Italiano
Bahasa Indonesia 繁體中文 Nederlands 日本語 한국어 Bulgarian Danish Hungarian Basa Jawa Malay Norwegian Romanian Swedish Telugu Thai Українська Filipino Turkish Azərbaycan Русский Vietnamese
"Programmers Are Made, Not Born" © 2026 CodeGym
MastercardVisa
"Programmers Are Made, Not Born" © 2026 CodeGym