Ho il seguente tipo di codice:sincronizzazione: thread eseguono due sezioni critiche stesso ordine
synchronized block1 {
//only one thread in the block
}
{lot of code where synchronization not necessary}
synchronized block2 {
//only one thread in the block.
//All the threads that executed block1 before this thread should have already executed this block.
}
Ogni thread prima esegue block1, a blocco non sincronizzato, e block2 nello stesso ordine.
Se il thread T1 esegue il blocco1 prima del thread T2, quindi T1 deve eseguire il blocco2 prima di T2. Ci sono più di due thread.
C'è un modo per ottenere questo in Java?
Suppongo che non sia possibile chiamare 'block2()' all'interno di block1? –
@NicholasRobinson Nessuna chiamata. Tutto il codice viene eseguito nell'ordine indicato. –
È questo in un metodo? Usando 'synchronized (this) {...}' o sono metodi diversi? –