Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2004
    Messaggi
    88

    [JAVA] thread: start contemporaneo

    Raga ma come si fa per far partire due o più thread contemporaneamente?
    praticamente devo creare dei thread che devono partire contemporaneamente all'avvio dell'applicazione

  2. #2
    Utente di HTML.it
    Registrato dal
    Jul 2004
    Messaggi
    88
    mi spiego meglio. io ho già esteso la classe Thread e modificato il metodo tun in modoc he fa quello che voglio io.
    nella classe Test dove ho il main ho creato e fatto partire i tre processi

    new Thread("nomeThread1").start();
    new Thread("nomeThread2").start();

    il problema è che questi tre processi non partono in contemporanea... (almeno così so io)

    è l'esercizio mi chiede di implementare un abitro coordina l'inizio del gioco garantendo che i giocatori possano iniziare il gioco contemporaneamente

  3. #3
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Originariamente inviato da draghe
    mi spiego meglio. io ho già esteso la classe Thread e modificato il metodo tun in modoc he fa quello che voglio io.
    nella classe Test dove ho il main ho creato e fatto partire i tre processi

    new Thread("nomeThread1").start();
    new Thread("nomeThread2").start();

    il problema è che questi tre processi non partono in contemporanea... (almeno così so io)

    è l'esercizio mi chiede di implementare un abitro coordina l'inizio del gioco garantendo che i giocatori possano iniziare il gioco contemporaneamente
    Quello che hai fatto va bene. Quel "contemporaneamente" non va interpretato alla lettera. E' impossibile, infatti, che più thread partano contemporaneamente, dato che il flusso di esecuzione di un programma viene eseguito un'istruzione alla volta. In quel modo i vari thread partiranno contemporaneamente, nel senso che saranno "intervallati" da un numero di millisecondi (millisecondi!!) pari alla granularità della macchina.


    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

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da draghe
    il problema è che questi tre processi non partono in contemporanea... (almeno così so io)
    Ma infatti in questo non c'è nulla di preciso e predeterminato!!! L'unica cosa sicura e garantita è che lo start() pone il thread nello stato di "runnable" (che non vuol dire in esecuzione!!). Vuol dire che può essere "schedulato" per passare poi in "running" in base alle decisioni dello scheduler.
    Con il codice sopra è anche possibile che il thread2 inizi la esecuzione prima ancora di thread1!!!
    Non ci sono garanzie a questo livello. Se non il fatto che certamente prima o poi il run() del Runnable verrà invocato e proseguirà fino alla terminazione. Ma il "quando" e "per quanto" esattamente e precisamente non lo stabilisci tu.

    Originariamente inviato da draghe
    è l'esercizio mi chiede di implementare un abitro coordina l'inizio del gioco garantendo che i giocatori possano iniziare il gioco contemporaneamente
    Non fissarti su questa questione. Tra l'altro non vedo il problema: se i due thread partono uno leggermente dopo dell'altro, è questione di un tempo tipicamente piccolissimo. Quindi dal punto di vista concettuale li dovresti "vedere" come se partissero contemporaneamente. Perché a meno che mi dimostri che il tuo programma ha dei gravi problemi (e lo dubito fortemente) se partono con un leggero sfasamento .... direi che è una questione .... non questione.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2008
    Messaggi
    813
    e cmq se hai un pc con un solo processore stai tranquillo che i thread non andranno MAI contemporaneamente...
    cmq...visto che attualmente sto facendo un'applicazione multi-thread ti posso dire che il scheduler del sistema operativo è un po' per conto suo...
    garanzie nessuna...
    se proprio togliere quel gap (che gli altri dicono di millisecondi, ma potrebbe benissimo essere anche di nanosecs) puoi usare i monitor e i notifyAll per la sincronizzazione dei thread, ma neanche qui i thread partono allo stesso istante...
    Nell'anno 1968 è bastata la potenza di due Commodore 64 per lanciare con successo una navicella sulla Luna; nell'anno 2007 ci vogliono la potenza di un processore quad core 3.30 GHz e 3 Gb di RAM (requisiti minimi ufficiali) per utilizzare Windows Vista. Qualcosa deve essere andato storto!

  6. #6
    Utente di HTML.it
    Registrato dal
    Jul 2004
    Messaggi
    88
    grazie a tutti

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.