Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1

    thread

    ciao a tutti, devo fare un gioco in java, e devo gestire una serie di eventi come ad esempio lancio del dado,gestione dei singoli giocatori ecc.., vorrei sapere come posso fare per gestire temporalmente questi eventi.....UTILIZZANDO I THREAD?....soltanto che ho una serie di metodi che hanno dei parametri, e quindi non posso metterli nel thread,perchè poi quando vado a lanciare il thread(thread.start()) non posso impostare i parametri.
    Come Posso fare?
    E' giusto utilizzare i thread oppure no?
    grazie.

  2. #2
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802

    Re: thread

    Originariamente inviato da jeppe1000
    soltanto che ho una serie di metodi che hanno dei parametri, e quindi non posso metterli nel thread,perchè poi quando vado a lanciare il thread(thread.start()) non posso impostare i parametri.
    Come Posso fare?
    Ti crei una tua classe Thread che implementa Runnable e la fornisci di tutti i metodi che vuoi...
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  3. #3
    Quindi i metodi li definisco fuori il run()?...Poi dopo quando vado a richiamare i metodi del thread e li eseguo, posso ugualmente mettere il thread in wait??...anche se i metodi non sono definiti dentro il run??
    non so se mi sono spiegato bene.....

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    forse hai poco chiari i concetti di programmazione ad oggetti e di thread.
    Il thread in java è una classe come tutte le altre, che ha un costruttore (a cui posso dare dei parametri ovviamente) e vari metodi, ergo posso passare parametri e quanto mi serve al costruttore e il metodo run se li trova di conseguenza (se valorizzi rispettive variabili di classe).

    Per quanto riguarda altri metodi, ovvio che da run puoi chiamare un altro metodo, ma wait lo chiami non su un metodo, ma bensì sull'oggetto di tipo thread che usi per incapsulare il tuo thread. Il metodo non sa niente del wait(e in generale devi sincronizzare l'accesso a risorse comuni), si comporta come se fosse l'unico in esecuzione (come è logico che sia).

  5. #5
    Originariamente inviato da jeppe1000
    Quindi i metodi li definisco fuori il run()?
    Hai due strade:
    1 - Implementazione dell'interfaccia Runnable (come già suggerito da Alex)
    2 - Estensione della classe Thread

    Indipendentemente dalla scelta, tu puoi far comunicare la tua classe thread con l'esterno, oltre che far comunicare tra loro le istanze della classe; dipende delle esigenze dell'applicazione che intendi sviluppare.
    Quindi tu vai a definire lo stato ed il comportamento di questa tua classe come consuetudine.

    Nel run() vai a specificare le operazioni che gli oggetti della tua classe devono svolgere in modo parallelo/contemporaneo oppure sincronizzato nel momento in cui si deve accedere ad un'unica risorsa, ad esempio la scrittura di un file.

    Originariamente inviato da jeppe1000
    ...Poi dopo quando vado a richiamare i metodi del thread e li eseguo, posso ugualmente mettere il thread in wait??...anche se i metodi non sono definiti dentro il run??
    non so se mi sono spiegato bene.....
    Se intendi fermare temporaneamente i tuoi thread usa il metodo sleep()

  6. #6
    Un piccolo esempio di estensione della classe Thread (scelta 2), lo trovi proprio nella doc ufficiale:
    http://download.oracle.com/javase/1....leep%28long%29

  7. #7
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Originariamente inviato da VincenzoTheBest
    Se intendi fermare temporaneamente i tuoi thread usa il metodo sleep()
    L'uso di sleep sarebbe sconsigliato: blocca il thread corrente senza rilasciare eventuali lock e rischia di inchiodare il programma se usato male...
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  8. #8
    Originariamente inviato da Alex'87
    L'uso di sleep sarebbe sconsigliato
    Questo lo dici tu. Dipende dal contesto e dall'uso che ne vuoi fare..

  9. #9
    il mio problema è che devo fare una specie di gioco dell'oca, quindi ho un jPanel1, da qui, una volta cliccato su un apposito bottone, attacco un altro jPanel2 dove ho genrato la domanda, a questo punto, a seconda della risposta che do sul jPanel2,tornaro sul jPanel1 con tutti i dati dei giocatori modificati. Il mio problema l'interazione tra i due nel momento in cui genero la domanda. Quindi avrei pensato di implementare Runnable nel jPanel1,cosi quando rendo visible jPanel2 pongo jPanel1 in wait();
    Pero mi sfugge qualcosa perche dopo non riesco piu a tornare nel Jpanel1 modificato come voglio.

    Avete dei consigli???


    Vi ringrazio.

  10. #10
    in pratica dovrei sincronizzare le due classi(2 Jpanel) nel modo seguente:
    Jpanel1:clicco sul bottone--->genero domanda(quindi attacco al jPane1 il Jpanel2 con la domanda)--->rispondo alla domanda(quindi interagisco con il jPanel2)--->ritorno al Jpanel1 dove continuero il gioco con i dati del giocatore modificati in base alla risposta data(Esatta o no).

    Ho provato senza thread scrivendo il seguente codice:
    .......
    Jpanel2.GeneraDomanda(); // per "attaccare" il pannello con la domanda nel jPanel1
    boolean EsitoDomanda=Jpanel2.Esito(); // restiruisce l'esito della domanda

    if(EsitoDomanda){
    .............}

    else{
    ...........}


    Il problema è che cosi facendo l'EsitoDomanda viene posto a false(e quindi continua il gioco come se avessi dato la risposta sbagliata) prima ancora che io possa interagire con il Jpanel2 dando la risposta alla domanda.


    CONSIGLI????????

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.