java cuvinte cheie sincronizate, Java pe blog doar despre
- Lock protejează segmentul de cod, care permite doar un singur fir la un moment dat pentru a efectua acest cod.
- Lock gestionează fire care încearcă să intre pe segmentul de cod securizat.
- Fiecare obiect condiție controlează fluxul, care a intrat într-un segment de cod sigur, dar care nu sunt încă în măsură să efectueze lucrările.
interfețe de blocare și starea au fost adăugate la Java SE 5.0, pentru a da programatorilor un grad ridicat de încuietori de control. Cu toate acestea, în cele mai multe situații nu va fi nevoie un astfel de control, și puteți utiliza un mecanism construit pe mass-media limbajul Java.
Inca de la versiunea 1.0, fiecare obiect Java are o blocare intrinsecă. În cazul în care o metodă este declarată cu cuvântul cheie sincronizat, de blocare obiect pentru a proteja întreaga metodă. Aceasta este, în scopul de a invoca această metodă, pentru a capta fluxul de obiectul de blocare internă.
Cu alte cuvinte, următoarele:
După cum puteți vedea, utilizarea cuvântului cheie sincronizate generează un cod mult mai concis. Desigur, pentru a înțelege, trebuie să știți că fiecare obiect are o blocare intrinsecă, și că dispozitivul de blocare are o condiție internă.
Lock gestionează fire care încearcă să introducă o metodă de sincronizat. Condițiile controlează fluxul cauzate de așteptare ().
Metodele sincronizate sunt relativ simple. Cu toate acestea, programatorii novice au adesea probleme cu condițiile.
De asemenea, este permis să se declare metode statice sincronizate. Când apelați această metodă, surprinde blocare internă a obiectului de clasă asociat.
De exemplu, în cazul în care clasa Banca are o metodă sincronizată statică, apoi Bank.class obiect de blocare este blocat atunci când este chemat. Ca urmare, nu poate provoca nici un alt flux și nici o altă metodă statică sincronizate din această clasă.
Interblocari și condiții au unele limitări:
- Nu poți opri fluxul, care este încercarea de a apuca de blocare.
- Nu puteți specifica un timeout, încercând să apuca de blocare.
- Având o singură condiție în blocare poate fi ineficientă.
Ce ar trebui să utilizați în cod - Lock și starea obiectelor sau metode sincronizate? Aici sunt recomandările noastre:
- Este mai bine să nu utilizeze orice blocare / Stare, sau un cuvânt cheie sincronizate. În multe situații, puteți utiliza unul din pachetul java.util.concurrent de mecanisme care vor face lucrarea de blocare pentru tine.
- În cazul în care cuvântul cheie sincronizate pentru situația dumneavoastră, asigurați-vă să-l folosească. Scrii mai puțin cod, și va fi mai puțin probabil să facă greșeli. Programul este prezentat mai jos prezintă un exemplu cu banca, implementat pe baza metodelor sincronizate.
- Utilizați Blocare / Stare, dacă aveți într-adevăr nevoie de caracteristici suplimentare ale acestor structuri.