Java是一種面向對象的編程語言,可以應用于各種應用程序開發,如桌面應用、Web應用、移動應用等。在Java的開發過程中,鎖是一個非常重要的概念,用于確保多線程并發訪問共享資源的安全性。
在Java中,鎖主要有兩種形式:同步方法和同步代碼塊。同步方法是指在方法聲明中添加synchronized關鍵字,表示該方法是同步的,同一時間只能有一個線程訪問該方法。同步代碼塊是指在代碼塊中添加synchronized關鍵字,表示該代碼塊是同步的,同一時間只能有一個線程訪問該代碼塊。
public class MyThread implements Runnable { private int tickets = 100; public void run() { while (true) { synchronized (this) { if (tickets >0) { System.out.println(Thread.currentThread().getName() + "賣出了第" + tickets-- + "張票"); } else { break; } } } } public static void main(String[] args) { MyThread myThread = new MyThread(); new Thread(myThread, "線程1").start(); new Thread(myThread, "線程2").start(); } }
如上所示,我們可以看到在MyThread類中添加了synchronized關鍵字的代碼塊,然后在多線程中啟動兩個線程,這兩個線程會同時進行并發訪問tickets變量,但是在訪問變量前先獲取到了鎖,確保了線程的安全性。
鎖在Java中的應用非常廣泛,它不僅可以保證多線程的安全,還可以用于控制加鎖的范圍以及控制線程的訪問順序等。