Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    Problema con due thread

    Ho un programma così composto da due classi:
    codice:
    public class ParThread extends Thread {
       String messaggio;
       
       public void run() {
          for(int i=0; i<10; i++) {
             System.out.println(messaggio);
          }
       }
       
       public ParThread(String mess) {
          messaggio = mess;
       }
    
    }
    codice:
    public class Main {
    
       public static void main(String[] args) {
          ParThread uno = new ParThread("Uno");
          ParThread due = new ParThread("Due");
          uno.start();
          due.start();
       }
    
    }
    Se lanco Main otterrò:
    Uno
    Uno
    Uno
    Uno
    ...
    Due
    Due
    Due
    Due
    ...

    Invece vorrei vedere questo risultato:
    Uno
    Uno
    Due
    Uno
    Due
    Due
    Uno
    ...

    Come potrei fare?

  2. #2

    Re: Problema con due thread

    Originariamente inviato da Power Dragon
    Come potrei fare?
    Potresti introdurre dei ritardi casuali, che dunque intervallano il lavoro di un Thread e rendono più evidente la concorrenza:
    codice:
        @Override
        public void run(){
        	Random r = new Random();
        	for(int i = 0; i < 10; i++){
        		System.out.println(message + ", " + i);
        		try {
        			Thread.sleep( r.nextInt(3000) ); // max 3 secondi di ritardo
        		} catch ( InterruptedException e ){}
        	}
        }
    Così facendo un possibile output è questo:
    codice:
    primo, 0
    secondo, 0
    secondo, 1
    primo, 1
    secondo, 2
    primo, 2
    primo, 3
    secondo, 3
    secondo, 4
    primo, 4
    primo, 5
    secondo, 5
    secondo, 6
    secondo, 7
    primo, 6
    primo, 7
    primo, 8
    primo, 9
    secondo, 8
    secondo, 9

  3. #3
    Utente di HTML.it L'avatar di Dark867
    Registrato dal
    Mar 2010
    Messaggi
    435
    E' una cosa normale: ormai i pc sono talmente potenti che prima che il secondo thread parta il primo già ha terminato!
    Il metodo dei ritardi casuali risolve questo problema

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 © 2024 vBulletin Solutions, Inc. All rights reserved.