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?

Rispondi quotando