2010-08-24 67 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 – 2010-08-24 21:04:16