ciao a tutti sto cercando di implementare una simulazione del gioco della corsa con i sacchi
ma probabilmente nn ho capito bene il concetto di wait e notify quindi i miei giocatori(i thread)
vanno ogn uno per conto proprio
che devo fare???????
ciao a tutti sto cercando di implementare una simulazione del gioco della corsa con i sacchi
ma probabilmente nn ho capito bene il concetto di wait e notify quindi i miei giocatori(i thread)
vanno ogn uno per conto proprio
che devo fare???????
Spiega meglio il problema...Che devo fare?
Se fai una domanda cosi' generale, non si capisce cos'e' che non ti funziona
Puoi postare anche pezzi di codice, se aiuta a rendere piu' chiaro il problema.
ho un campo di gioco che è una matrice ho un numero di giocatori pari al numero di righe della matrice. ogni thread cerca di accedere ad una variabile condivisa che inizialmente è 0 quando un arbitro da il via partono tutti insieme
ho fatto passo per passo quello che mi è stato richiesto
ma solo il thread 1 parte per conto suo arriva alla fine e poi gli altro thred iniziano a partire nel modo specificato ecco l algoritmo che esegue un thread
public void sposta() {
synchronized (campo.S) {
int s=campo.S.intValue();
s++;
this.campo.campo[posx][posy] = null;
campo.campo[posx][posy + 1] = this;
posy += 1;
System.out.println("---------------------------------");
campo.StampaCampo();
}
}
il run nn fa altro che ciclare e richiamare ogni volta il metodo sposta.
Come li fai partire i thread?
lo spostamento avviene nella classe giocatore
lo start dei thread nella classe gioco che inizializza il campo con i giocatori e li fa partire
la cosa che però trovo estremamente strana è che se faccio partire il programma con eclipse mi succede che il primo arriva alla fine e solo dopo iniziano gli altri
mentre se lo faccio partire dal prompt i thred partono nell ordine 1 2 3.....
da cosa dipende? il risultato nn dovrebbe essere lo stesso?
Cerca di usare dei titoli un po' meno atomici, così da rendere più chiaro di cosa si parla nella discussione.
Questo lo correggo io.
Poi, quando poni una domanda, cerca sempre di dare maggiori dettagli possibili: in questo caso, infatti, il codice andava postato subito (come fanno le persone a capire dov'è il problema se non vedono il codice incriminato?).
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
Puoi postare anche il codice che fa partire i thread?
public void parteGioco() {
inizio = new Arbitro("arbitro", this,0,0);
for (Giocatore[] giocarr : campo) {
for (Giocatore gio : giocarr) {
if (gio != null) {
gio.start();
}
}
}
inizio.start();
}
Certo non sono esperto della versione 5... ma che roba è questa?Originariamente inviato da iena_82
for (Giocatore[] giocarr : campo) {
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