Visualizzazione dei risultati da 1 a 3 su 3

Discussione: Synchronized java

  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2011
    Messaggi
    2

    Synchronized java

    Salve, innanzitutto premetto di essere nuovo del forum e dei forum in generale....cmq...

    sto implementando un programmino che simuli il server di una banca, che accetti ovvviamente piu client alla volta, e che per fare questo ovviamente c'è il problema di lavorare con piu client contemporaneamente che possiedono lo stesso conto!!!!
    "non si puo prelevare e versare contemporaneamente..."

    questa è una stilizzazione del codice:

    codice:
    public void run() {
    
          //scegli operazione.. 
         es : input = 1;
    
         modifica(1);
           
    
    }
    public modifica(int a){
    
       operazione = a;
    
        if (operazione == 1) operaz1();
        if (operazione == 2) operaz2();
    
    }
    
    public void operaz1(){
    
       //prelevo denaro;
    }
    public void operaz2(){
    
      //verso denaro;
    
    }
    all inizio posso scegliere la possibile operazione;
    per ogni operazione esiste un metodo, ma io ho bypassato tutte le operazione in un metodo "modifica" perche ho pensato che se riuscissi a far girare quel metodo "sincronizzato", nel senso una volta chiamato la macchina nn può passare su altri processi finche esso nn è terminato, avrei risolto il mio problema...

    è possibile fare una cosa del genere???? in che modo???

    Grazie per l attenzione!!

  2. #2
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    1,123
    Ti è sufficiente dichiarare come synchronized il/i metodo/i in questione. A esempio:
    codice:
    synchronized void metodo(int parametro) {
      // Codice
    }
    Ovviamente come hai detto, per gestire più client contemporaneamente il Server deve essere multithread.
    Non so come è progettato, quindi è difficile darti più informazioni.

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2011
    Messaggi
    2
    guarda il server è multithread e li nn c'è problema.....

    io ho provato come dici tu, ma per fare un test ho messo questo codice subito dopo l entrata nel metodo modifica

    codice:
    try {
                
                for (int c = 0; c< 10 ; c++){
                 os.println(c);
                Thread.sleep(1000);
    
                }
    
    } catch (InterruptedException ex) {
                Logger.getLogger(clientThread.class.getName()).log(Level.SEVERE, null, ex);
            }
    così che prima di eseguire qualsiasi operazione mi deve stampare da 1 a 10 nel client cadasecondo.

    ma il risultato è che se avvio l operazione con 2 client.. mi stampa in numeri contemporaneamente.... questo vuol dire che sono tutti e due dentro quel metodo...

    cmq posto il codice, è un po incasinato che ci sto lavorando.....

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.