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?