Te guard() metode ir definēta tā, lai vairākas guarded metodes var izsaukt tās pakalpojumus, izvairoties no nevajadzīgās koda atkārtošanas. guardedMethod() lieto guard(),lai pārbaudītu, vai tā var turpināt izpildi. Ja nosacījums, kuru pārbauda guard metode ir patiess, tad izpilde tiek turpināta, ja nē, tad guard() metode izpilda wait(), kas pārtrauc pavediena izpildi un ievieto to rindā. Katrā metodē, kura mainot stāvokli iespējams var atļaut stāvošam rindā pavedienam turpināt savu darbu, vajag izsaukt notifyAll() pēc stāvokļa maiņas pabeigšanas. Tas pamodina visus rindā stāvošus pavedienus, kuri atkal pārbauda savus nosacījumus pēc kārtas (guard() metode ir sinhronizēta). Ja nosacījumi izpildījās attiecīgam pavedienam, tad tam tiek atļauts turpināt izpildi.
No busy wait tas atšķiras tā, ka atliktie pavedieni nepatērē CPU laiku, izņemot tikai tad, kad tie tiek pamodināti, lai pārbaudītu potenciāli svarīgu stāvokļa maiņu. Turklāt atšķirībā no busy wait, dotā pieeja dos izpildes iespēju pat zemas prioritātes pavedieniem.
SECINĀJUMI
Referātā ir aprakstīts ar piemēriem, kā, izmantojot Java valodas iespējas, var rakstīt programmas ar pavedieniem un kādas kļūdas var tajās parādīties. Pēc izpētes tika secināts, ka vienmēr, kad tiek izmantotas jaunas iespējas, var parādīties jaunas problēmas programmā.
…