Visualizzazione dei risultati da 1 a 4 su 4

Discussione: Probema con i semafori

  1. #1
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    39

    Probema con i semafori

    ciao ragazzi ho un problema in pratica vorrei che venga eseguito un metodo esattamente dopo che finisce l'esecuzione di un metodo che al suo interno ha un thread:
    Semaphore s;
    s=new Semaphore(0);//nel costruttore
    miometodo(){

    moveCarta(ca);//chiama il thread
    try {
    s.acquire();

    } catch (InterruptedException e) { e.printStackTrace();}

    calcola();
    }
    codice:
            public synchronized void moveCarta(Carta v){    
            Thread runner=new Thread() { 
            public void run(){
                
                Point po=v.getLocation();
                 int x=(int)po.getX();
                 int y=(int)po.getY();    
                  int i=0;
                  p.reset(x,y);
            
                     while (i<30){
                            p.paintcarta(v,v.getposizione(),i);
                               i++;
                        try {
                           sleep(50);
                       } catch (Exception ex) {}
                        
                   } 
                  
                s.release(); 
             }  
           };
           runner.start();
        }


    facendo cosi mi da la sequenzialità voluta ma non mi fa vedere la carta che si muove di un certo numero di passi(30).ho provato con join() con le lock e le condition ma mi da lo stesso risultato.
    Come posso risolvere questo problema?

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254
    Davvero hai bisogno di lock, semafori, sincronizzazione per ... far muovere delle carte???
    Non ci credo .....
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    39
    no ma mi serve che dopo che terimina il thread mi svolga il metodo calcola(), invece senza semafori dopo invocato il thread prima mi svloge il metodo calcola e poi termina il thread. però con i semafori non si vede il movimento, questo perchè mi serve la posizione finale della carta del thread. come posso fare?
    Ultima modifica di breathex; 27-05-2017 a 19:23

  4. #4
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    39
    risolto, in calcola ho sleeppato e adesso si muovono e mi fa il calcolo giusto,grazie

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 © 2024 vBulletin Solutions, Inc. All rights reserved.