Visualizzazione dei risultati da 1 a 6 su 6

Discussione: [JAVA] Synchronized

  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2004
    Messaggi
    59

    [JAVA] Synchronized

    La parola chiave Synchronized di java permette la mutua esclusione fra processi di una variabile. Come fà? Tramite una soluzione software (tipo l'algoritmo di Peterson) o tramite una soluzione hardware (tipo la primitiva TESTANDSET)?

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Non sono sicuro di questo, ma credo che lo faccia tramite soluzione software. Ciò che mi spinge a dare questa risposta è il fatto che Java deve rimanere cross-platform anche in nel campo delle sincronizzazioni fra processi, quindi non può avere accesso diretto all'hardware. Il programma, infatti, gira sopra una macchina virtuale (la JVM), che fornisce questa feature ai programmi che girano su di essa.

    In effetti non ho trovato molto a riguardo nel sito della Sun (molte delle risposte che cerchi sono, infatti, ad esclusiva consultazione da parte di chi è iscritto al Sun Developers Network e io non sono fra quelli ).

    Una cosa, però, posso consigliarti: dai un'occhiata al libro "The Java Language Specification" (http://java.sun.com/docs/books/jls/), forse lì trovi le tue risposte.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2004
    Messaggi
    59
    A questo fatto della "cross platform" non ci avevo mai pensato e, ora che me lo hai detto, sono quasi convinto che sia proprio come dici te. Aspettiamo un po... magari qualcuno che ha accesso a tale informazioni potrà confermare o smentire.

  4. #4
    Utente di HTML.it
    Registrato dal
    Nov 2004
    Messaggi
    59
    Però ora che ci penso, è vero che java è cross-platform, ma è pur vero che la JVM è differente per ogni architettura. Forse la chiave della questione è proprio li, nel senso che sulle architetture che hanno una primitiva hardware di TASTANDSET (o simile) la parola chiave syncronized è implementata in hardware, mentre nelle altre con soluzione software. Che ne pensi?

  5. #5
    la risposta la si trova andando a vedere come lavora la VM.
    Un punto di partenza potrebbe essere http://www.javaworld.com/javaworld/j...07-hood_p.html

  6. #6
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Ho visto l'articolo postato da mcolombara, ma, come temevo, viene spiegato il funzionamento ad alto livello (ovvero come la JVM gestisce la cosa dal punto di vista del bytecode). Ho notato, però, che l'articolo fornisce un link che, sbadatamente, non ti ho fornito sopra. Infatti ti ho fornito il link al libro "The Java Language Specification", ma non quello al libro "The Java Virtual Machine Specification": http://java.sun.com/docs/books/vmspec/

    Anch'io ho pensato al fatto che la VM viene distribuita in versioni differenti a seconda del S.O. e, come te, ho pensato che potesse comportarsi in modo diverso a seconda di ciò che ha a disposizione... il dibattito rimane aperto!


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

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.