Java中,對象鎖和類鎖是同步代碼的兩種實現方式。在多線程編程中,它們可以保證數據的同步和線程安全。
對象鎖指的是某個對象在被鎖定后,其他線程訪問該對象的同步方法或代碼塊會被阻塞,直到原先線程釋放該對象鎖。使用synchronized關鍵字可以實現對象鎖。
public class ObjectLock { private int count = 0; private Object lockObj = new Object(); public void addCount() { synchronized(lockObj) { count++; } } }
上述代碼中,lockObj就是對象鎖,它被用來保證對count屬性的訪問是同步的。在addCount()方法內,使用synchronized保證了對lockObj的訪問是互斥的。
類鎖指的是某個類在被鎖定后,其他線程無論實例化該類還是訪問其中的同步方法,都會被阻塞。使用synchronized關鍵字修飾靜態方法可以實現類鎖。
public class ClassLock { private static int count = 0; public static synchronized void addCount() { count++; } }
上述代碼中,addCount()方法是靜態方法,使用synchronized關鍵字修飾,它就是類鎖。無論其他線程訪問該類的同步方法還是實例化該類,都必須等待原先線程釋放類鎖。
上一篇php curl 轉碼
下一篇java對象和實例變量