Visualizzazione dei risultati da 1 a 4 su 4

Visualizzazione discussione

  1. #1

    Concorrenza thread java

    Ciao a tutti ho da svolgere un esercizio in java ma non ci riesco.

    Data una matrice quadrata di interi devo scorrere la matrice tramite due thread sincronizzati in modo tale che il primo thread conta gli elementi dispari per ogni riga mentre il secondo thread crea per ogni riga un array di dimensione pari al numero di numeri dispari.

    Finora ho scritto questo ma non funziona

    codice:
    class Esercizio {
    
        private static int riga = 0;
        private static int [][] m = {{1,2,3,4,5} , {6,7,8,9,10} , {11,12,13,14,15}};
        private static int count = 0;
        private static Thread t1 ,t2;
    
    
        public synchronized static int [] getVettoreRiga () {
            return m [riga];
        }
    
    
        public static void main (String [] args) throws Exception {
            t1 = new Thread () {
                public void run () {
                    try {
                        t2.wait ();
                    }catch (Exception e) {
                        e.printStackTrace ();
                    }
                    while (riga < m.length) {
                        count = 0;
                        int [] a = getVettoreRiga ();
                        for (int i : a)
                            if (i%2 != 0)
                                count++;
    
    
                        notify ();                    
                    }
                }
            };
    
    
            t2 = new Thread () {
                public void run () {
                    while (riga < m.length) {
                        try {
                            t1.wait ();
                        }catch (Exception e) {
                            e.printStackTrace ();
                        }
                        int [] a = new int [count];
                        int pos = 0;
                        int [] b = getVettoreRiga ();
                        for (int i : b)
                            if (i%2 != 0) {
                                a [pos] = i;
                                pos++;
                            }
    
    
                        for (int i : a)
                            System.out.print (i + " ");
    
    
                        notify ();                    
                    }
                }
            };
    
    
            t1.start ();
            t2.start ();
    
    
            t1.join ();
            t2.join ();
            
            System.out.println ("FINITO");
    
    
        }
    
    
    }
    Aiutatemi vi prego!!!!
    Ultima modifica di surfacexxv; 13-11-2014 a 19:51

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.