lockCanvas()调用后同步块的目的?

时间:2020-05-01 10:45:27

标签: java android thread-safety android-canvas synchronized

我已接近在Android的Canvas上绘制图形,但感到困惑:

try { 
c = panel_thread.getHolder().lockCanvas(null);
synchronized (panel_thread.getHolder()) {
    panel_thread.update();
    panel_thread.onDraw(c);
}

}

this答案中所述:

之所以将其称为lockCanvas(),是因为直到您调用unlockCanvasAndPost()之前,没有其他代码可以调用lockCanvas()并写入表面,直到您的代码完成为止。

lockCanvas方法似乎可以确保在调用 unlockCanvasAndPost 之前不会在其上绘制其他线程。

在回答中也对此进行了说明:

没有同步块,多个线程可以同时绘制图形

但是,如果 lockCanvas 已经编写了Canvas线程安全的著作,那么使代码块同步的目的是什么?

0 个答案:

没有答案
相关问题