tifyty

pure Java, what else ?

Tudásteszt multi thread, 2 tipp

Ez nem egy önálló poszt, hanem a bejegyzés feladatához egy segítség. Ha azt a bejegyzést még nem olvastad el, akkor inkább kezdd ott.

A

package sleep;
 
import dream.Dream;
 
public class Sleeper {
    private int level;
 
    public synchronized int enter(Dream dream) {
        level++;
        try {
            dream.dream(this);
        } finally {
            level--;
        }
        return level;
    }
}

kódban a synchronized azt garantálja, hogy az enter metódust ebben az objektumban egyszerre csak egy szál futtathatja. Gondoljunk csak Arankára az út szélén!

Ha egyszerre akarja Józsi, meg Aladár is futtatni Arankát, abból késelés lesz. De előfordulhat, hogy először Józsi futtatja Arankát, majd amíg Józsi a hűvösön vár egy kicsit, addig Aladár futtatja Arankát, utána pedig, amikor Józsi kijön a hűvösről, és már nem vár (érted? Nem vár!), akkor megint Józsi futtatja Arankát, mindeközben Aranka igencsak aktív és még nem tért meg (vissza) teremtőjéhez a nyilvános, állandó és értékőrző (void, mint értéket vissza nem adó) fő metódushoz.

Portból lettünk, és porrá leszünk, mint a leves. 
Úgyis, mint anyukád portját, amiből lettél, 
mag apukád kompatibilis interfészét amivel implementált.

Nem sértegetésnek, csak úgy bónusz, hogy ne unatkozz.

Vélemény, hozzászólás?

Adatok megadása vagy bejelentkezés valamelyik ikonnal:

WordPress.com Logo

Hozzászólhat a WordPress.com felhasználói fiók használatával. Kilépés / Módosítás )

Twitter kép

Hozzászólhat a Twitter felhasználói fiók használatával. Kilépés / Módosítás )

Facebook kép

Hozzászólhat a Facebook felhasználói fiók használatával. Kilépés / Módosítás )

Google+ kép

Hozzászólhat a Google+ felhasználói fiók használatával. Kilépés / Módosítás )

Kapcsolódás: %s

%d blogger ezt kedveli: