lockCanvas() und synchronized - Wieso doppelter Lock?

  • Hallo zusammen,


    ich bin gerade dabei, etwas über Spieleentwicklung für Android zu lesen. Ein typischer Codeschnipsel, um ein Canvas vom SurfaceHolder zu bekommen und etwas darauf zu zeichnen, sieht ja so aus:


    Java
    try{
      Canvas c = mSurfaceHolder.lockCanvas();
      synchronized(mSurfaceHolder){
    	malWasAufsCanvas(c);
      }
    } finally{
      if(c!=null) {  
    	mSurfaceHolder.unlockCanvasAndPost(c);
      }
    }


    Jetzt ist es ja so, dass sowohl lockCanvas() als auch synchronized() an dieser Stelle dazu da sind, dass nicht verschiedene Threads gleichzeitig auf das Canvas zugreifen, oder? Wieso benutzt man dann beides? Also konkret: Könnte man das synchronized() auch einfach weglassen? Eigentlich sollte es doch keinen Unterschied machen.


    Noch eine Frage zum Verständnis: Wenn ich jedesmal das komplette Canvas neu zeichne, ist es doch sowieso unerheblich, ob verschiedene Threads gleichzeitig darauf zugreifen, richtig?


    Viele Grüße
    David



    PS: Habe über die SuFu nichts zu dem Thema gefunden.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!