ПредишенСледващото

Когато започнем две или повече нишки в програмата, може да стане така, когато множество нишки се опитват да получите достъп до един и същи ресурс, и най-накрая, те може да доведе до неочаквани резултати, дължащи се на проблеми едновременност. Например, ако няколко теми се опитват да пишат в един и същи файл, те могат да доведат до увреждане на данните, тъй като един от потоците могат overrite данни или по време на една нишка се отваря един и същи файл в същото време, друга тема може да затвори едното, и същия файл.

Така, че е необходимо да се синхронизира работата на множество нишки и се уверете, че само една нишка да получите достъп до този ресурс във всеки даден момент. Това се постига с използването на понятието под nazvaniemmonitorov. Всеки обект в Java е свързан с монитор, който нишка може да заключите или отключите. Само една нишка може да побере ключалката на монитора.

Програмният език Java осигурява много лесен начин за създаване теми и да ги синхронизирате с задачи pomoschyusinhronizirovannyh блокове. Продължаваш споделени ресурси в рамките на тази единица. По-долу е най-общата форма на синхронизирано изявление:

Zdesobjectidentifier е препратка към обекта. чийто замък е свързан с монитор. което е синхронизирано изявление. Сега ще видим два примера за където ние ще се отпечата на гишето с две различни теми. Когато потоците не са синхронизирани, те отпечатате брояч стойност не е в последователността, но когато се заключи, брояч, синхронизиран с поставяне вътре () блок, той отпечатва брояч много в поредицата за двата потока.

Многонишково например без синхронизация:

Ето един прост пример, който може или не може отпечатате равностойност в последователността, и всеки път, когато използвате, той произвежда различен резултат в зависимост от наличието на процесор поток.

Това дава различен резултат при всяко стартиране на програмата:

Многонишково пример за синхронизация:

Ето същия пример, който отпечатва брояч стойност в последователността, и всеки път, когато стартирате, това води до същия резултат.

Това дава същия резултат при всяко стартиране на програмата:

Свързани статии

Подкрепете проекта - споделете линка, благодаря!