2010-08-24 5 views
0

Что означает эта строка из следующего кода кода?что это за безымянная функция?

synchronized (_surfaceHolder) { 
    _panel.onDraw(c); 
} 

Я могу догадаться, что он делает, но что он называется и как он работает? Является ли это безымянной синхронизированной функцией?

class TutorialThread extends Thread { 
    private SurfaceHolder _surfaceHolder; 
    private Panel _panel; 
    private boolean _run = false; 

    public TutorialThread(SurfaceHolder surfaceHolder, Panel panel) { 
     _surfaceHolder = surfaceHolder; 
     _panel = panel; 
    } 

    public void setRunning(boolean run) { 
     _run = run; 
    } 

    @Override 
    public void run() { 
     Canvas c; 
     while (_run) { 
      c = null; 
      try { 
       c = _surfaceHolder.lockCanvas(null); 
       synchronized (_surfaceHolder) { 
        _panel.onDraw(c); 
       } 
      } finally { 
       // do this in a finally so that if an exception is thrown 
       // during the above, we don't leave the Surface in an 
       // inconsistent state 
       if (c != null) { 
        _surfaceHolder.unlockCanvasAndPost(c); 
       } 
      } 
     } 
    } 

ответ

2

Там нет скрытого метода, код просто синхронизируется с объектом _surfaceHolder. В основном, он говорит, чтобы получить блокировку _surfaceHolder перед выполнением строк в {}.

См. Intrinsic Locks and Synchronization.

+0

Спасибо! Я не знал, как его зовут, так что не удалось его удалить: p –

Смежные вопросы