Ho una domanda semplice dai dump di OCJP.Depositi OCJP multithreading ThreadSeven extends Thread
DOMANDA NO: 220 Dato:
1. public class TestSeven extends Thread {
2. private static int x;
3. public synchronized void doThings() {
4. int current = x;
5. current++;
6. x = current;
7. }
8. public void run() {
9. doThings();
10. }
11. }
Quale affermazione è vera?
A. La compilazione non riesce.
B. Un'eccezione viene generata in fase di esecuzione.
C. La sincronizzazione del metodo run() renderebbe la classe thread-safe.
D. I dati nella variabile "x" sono protetti da problemi di accesso simultaneo.
E. Dichiarare il metodo doThings() come statico renderebbe la classe thread-safe.
F. Il wrapping delle istruzioni all'interno di doThings() in un blocco sincronizzato (nuovo Object()) {} renderebbe la classe thread-safe.
risposta è l'opzione E.
La mia domanda: come doThings() viene già synchornozed, non ne fanno thread-safe?
Si prega di fornire anche alcuni buoni collegamenti per questi argomenti.
+1 –