Argomento 10: concorrenza Flashcards
Nel diagramma degli stati di un thread A in java, la transizione tra lo stato di blocked allo stato ready da quali eventi può essere causata?
- Dal completamento di un’operazione di I/O o dal rilascio del lock intrinseco dell’oggetto da parte di un altro thread che aveva causato il passaggio di A da running a blocked
- Dal completamento di un’operazione di I/O
- Dalla chiamata da parte di un altro thread del metodo notifyAll all’interno di un metodo dell’oggetto sul quale A si è messa in attesa
- Dal rilascio del lock intrinseco dell’oggetto da parte di un altro thread che aveva causato il passaggio di A da running a blocked
- Dal completamento di un’operazione di I/O o dal rilascio del lock intrinseco dell’oggetto da parte di un altro thread che aveva causato il passaggio di A da running a blocked
Quando un thread A in un programma Java è bloccato dopo aver provato ad eseguire un metodo synchronized di un oggetto O mentre un altro thread B stava già eseguendo …. dello stesso oggetto, quale evento lo può far uscire da questo stato?
- Il fatto che il thread B termini l’esecuzione del metodo synchronized
- Il fatto che thread B chiami il metodo notifyAll all’interno di un metodo dell’oggetto O
- Il fatto che lo scheduler lo selezioni per l’assegnazione del quanto di tempo
- Il fatto che il thread B termini l’esecuzione del metodo synchronized
Il controllo dell’accesso di più thread Java a diverse operazioni (tanto in lettura quanto in scrittura) a metodi di risorse condivise in generale…
- Richiede la specifica del qualificatore synchronyzed per i metodi per i quali si vuole forzare la mutua esclusione ma anche la notifica del metodo notify da parte di chi termina l’esecuzione del metodo in mutua esclusione per svegliare chi è stato bloccato
- Non è possibile con l’approccio a monitor adottato da java ma richiede l’uso di semafori
- Richiede semplicemente synchronized per i metodi per i quali si vuole forzare la mutua esclusione
- Oltre alla specifica del qualificatore synchronized nei metodi per i quali si vuole forzare la mutua esclusione richiede un’attenta definizione di condizioni per il blocco (messa in attesa) e risveglio (notifica) dei thread
- oltre alla specifica del qualificatore synchronized nei metodi per i quali si vuole forzare la mutua esclusione richiede un’attenta definizione di condizioni per il blocco (messa in attesa) e risveglio (notifica) dei thread
Un thread A è bloccato perché ha provato ad eseguire un metodo synchronized di un oggetto O mentre un altro thread B stava già eseguendo lo stesso metodo dello stesso oggetto. Il thread B chiama il metodo wait. In che stato passa il thread A?
- Ready
- Running
- Blocked
- Waiting
- Ready
A quali entità sono associati i Lock gestiti automaticamente dalla macchina virtualeJava?
- Metodi
- Interfacce
- Oggetti
- Classi
- Oggetti
Quando un thread in un programma Java, riceve una notifica attraverso il metodo notifyAll, in quale stato viene spostato (in riferimento al ciclo di vita dei thread)?
- waiting
- ready
- blocked
- running
- ready
Quando un thread invoca il metodo wait() succede che:
- L’esecuzione viene sospesa a tempo indeterminato e il lock rilasciato
- L’esecuzione viene interrotta e quindi il lock rilasciato
- L’esecuzione viene sospesa a tempo indeterminato ed il lock non viene rilasciato
- L’esecuzione viene interrotta e quindi il lock non viene rilasciato
- L’esecuzione viene sospesa a tempo indeterminato e il lock rilasciato
In Java, l’esecuzione di un metodo synchronized comporta l’acquisizione di un lock associato all’oggetto su cui viene invocato il metodo. QUALI eventi provocano il rilascio del lock da parte della macchina virtuale?(forse 2 risposte)
- La terminazione del metodo
- L’invocazione del metodo wait()
- La scadenza di un quanto di tempo predeterminato
- La terminazione del metodo
- L’invocazione del metodo wait()
Il quantificatore synchronized applicato ad un blocco di codice Java significa che viene eseguito in mutua esclusione rispetto:
- Agli altri metodi o blocchi dello stesso oggetto
- Agli altri metodi o blocchi di oggetti diversi ma dello stesso tipo
- A tutti gli oggetti che hanno un metodo o blocco synchronized al loro interno (anche di tipi diversi)
- Agli altri metodi o blocchi dello stesso oggetto
Quale meccanismo di interazione fra processi è incorporato nel linguaggio FSP?
- Condivisione di memoria
- Scambio di messaggi
- Esecuzione simultanea di azioni
- Condivisione di stati
- Esecuzione simultanea di azioni