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

    prendere lock su una cella array

    Salve, mi chiedevo se, data la classe buffer:
    costituita da:

    - un array che chiameremo A
    - un metodo put
    -un metodo get

    è possibile per un thread(che deve inserire un oggetto)che chiameremo "OCCUPACELLALIBERA" prendere il lock, solo su una cella e non su tutto l'array.MI spiego meglio vorrei che i thread di questo tipo potessero tutti scorrere l'array per cercare la cella ,ma solo una volta trovata prendere il lock su QUESTA SOLA.E' un caso analogo ad un esercizio che devo fare,ma che non riporto perchè la traccia è troppo lunga

    Ecco il metodo put della classe buffer:
    codice:
    void put(){
        
         try{     
          // bla bla----(operazioni senza esclusione)
            
           ricercaCellaLIbera();
      //tutti i thread lo possono fare in quanto ad ogni thread serve una cella!!
      //una volta trovato l'indice ogni thread deve prendere il lock su quella cella per lavorarci!
      
    
        }catch(Exception E){}
        
    }

    gentilmente siate chiari,non sono pratico con i thread ancora ed ogni volta che mi trovo davanti una traccia d'esame è una battaglia,spero di essermi spiegato bene ...

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: prendere lock su una cella array

    Originariamente inviato da valeriAsus
    è possibile per un thread(che deve inserire un oggetto)che chiameremo "OCCUPACELLALIBERA" prendere il lock, solo su una cella e non su tutto l'array.MI spiego meglio vorrei che i thread di questo tipo potessero tutti scorrere l'array per cercare la cella ,ma solo una volta trovata prendere il lock su QUESTA SOLA.
    Prima di poter dare qualche suggerimento, avrei bisogno di sapere:
    a) Di che tipo è l'array (cosa contiene)?
    b) Il buffer ha dimensione fissa, quindi l'array è istanziato all'inizio e resta sempre quello?
    c) Quale è il criterio per dire "cella libera"?
    d) Se non ci sono celle libere, il put cosa deve fare? Far andare in sospensione il thread?

    Giusto solo per avere chiaro tutto il contesto.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    hai ragione sono stato un po troppo generico,mi avvicino di più alla traccia del mio problema,diciamo che l'array buffer contiene.

    -oggetti RICHIESTA (a sua volta questo oggetto è dotato di una matrice inizializzata a zero)
    intendo dire che la cella è VUOTA se questa matrice è appunto zero.
    Cioè buffer[i]--->Richiesta.
    Richiesta --->matrice
    buffer[i].matriceNulla() --->intendo che la cella è vuota.



    -Si il buffer è sempre fisso.

    -se non ci sono celle libere il thread deve andare in sospensione e attendere che si liberano.

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.