Heim >Java >javaLernprogramm >Detaillierte Einführung und Beispielcode der Java-Thread-Sperre

Detaillierte Einführung und Beispielcode der Java-Thread-Sperre

高洛峰
高洛峰Original
2017-01-11 15:41:171375Durchsuche

Java-Thread-Sperre

Verwenden Sie das synchronisierte Schlüsselwort in Java-Threads, um eine Synchronisierung zu erreichen

synchronized kann Methoden sperren, Klassen sperren, Objekte sperren und Codeblöcke sperren

Methodensperre

// 加在方法上面的同步锁是this
  public synchronized void print() {
    System.out.println("同步方法");
    try {
      Thread.sleep(3000);
    } catch (InterruptedException e) {
      e.printStackTrace();
    }
  }

Klassensperre

public synchronized void print(String msg) {
    // 类锁
    synchronized (MyThread.class) {
      System.out.println(msg);
      try {
        Thread.sleep(3000);
      } catch (InterruptedException e) {
        e.printStackTrace();
      }
    }
  }

Objektsperre

zum Verkaufen Take Zugtickets als Beispiel

public class Window extends Thread {
 
  public Window(String name) {
    super(name);
  }
 
  static int tick = 100;
  static String obj = new String();
 
  @Override
  public void run() {
    // 开始卖票
    while (tick > 0) {
      // 同步代码块
      // 一把锁 钥匙
      // 所有的线程 必须在这里排队
      synchronized (obj) {
        if (tick > 0) {
          System.out.println(getName() + "卖出了第【" + tick + "】张票");// 失去了cpu资源
          tick--;
        }
      }
      try {
        Thread.sleep(100);
      } catch (InterruptedException e) {
        e.printStackTrace();
      }
    }
 
  }
}

Vielen Dank fürs Lesen, ich hoffe, es kann allen helfen, vielen Dank für Ihre Unterstützung dieser Seite!

Ausführlichere Einführungen in Java-Thread-Sperren und Artikel zum Beispielcode finden Sie auf der chinesischen PHP-Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn