Visualizzazione dei risultati da 1 a 5 su 5

Visualizzazione discussione

  1. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da Trevo92 Visualizza il messaggio
    Se mi trovo ad avere due metodi synchronized, uno di classe (static) e uno di istanza, questi possono essere eseguiti contemporaneamente (da più thread) oppure il primo ad essere eseguito, che quindi ottiene il lock, blocca l'altro fino al suo completamento?
    m1 sincronizza sull'oggetto su cui è invocato m1. Quindi thread differenti che invocano m1 su istanze differenti non si bloccano a vicenda, ovvero non c'è mutua esclusione.

    m2 sincronizza sulla istanza di java.lang.Class di quella classe (dove c'è m2). Pertanto è una mutua esclusione "globale".

    Ed essendo oggetti di lock comunque differenti non c'è mai mutua esclusione tra m1 e m2. Ovvero thread A può invocare m1 e contemporaneamente thread B può invocare m2.

    E per finire: hai solo abbozzato il codice, quindi non si capisce cosa fanno quei metodi. Se m1 invocasse m2, allora il "collo di bottiglia" diventa proprio m2.
    Ultima modifica di andbin; 23-10-2013 a 17:45
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.