synchronized
указывает, что только один поток может одновременно выполнять этот блок кода.
В этом примере без блока synchronized
несколько потоков могут рисовать графику одновременно, ирезультаты могут быть грязными.Таким образом, synchronized
гарантирует, что только один поток может рисовать одновременно.
lockCanvas()
создает область поверхности, на которую вы будете писать.Причина, по которой он называется lockCanvas()
, заключается в том, что до тех пор, пока вы не вызовете unlockCanvasAndPost()
, никакой другой код не сможет вызвать lockCanvas()
и записать данные на поверхность, пока ваш код не будет завершен.когда это относится к многопоточному программированию.Блокировка - это примитив синхронизации, который используется для защиты от одновременного доступа к ресурсам / коду несколькими потоками.Он получил свое имя, потому что ведет себя как физический замок.Обычно один поток может получить блокировку, и пока он не снимет блокировку, ни один другой поток не сможет получить блокировку.Одним из возможных способов использования блокировки является то, что ее неправильное использование может привести к ситуации «мертвой блокировки», когда потоки остаются в ожидании блокировки и никогда не освобождаются.