Maison >Java >javaDidacticiel >Introduction détaillée et exemple de code de verrouillage de thread Java

Introduction détaillée et exemple de code de verrouillage de thread Java

高洛峰
高洛峰original
2017-01-11 15:41:171375parcourir

Verrouillage des threads Java

Utilisez le mot-clé synchronisé dans les threads Java pour réaliser la synchronisation

synchronisé peut verrouiller les méthodes, verrouiller les classes, verrouiller les objets et verrouiller les blocs de code

Verrouillage de méthode

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

Verrouillage de classe

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

Verrouillage d'objet

à vendre Prendre des billets de train à titre d'exemple

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();
      }
    }
 
  }
}

Merci d'avoir lu, j'espère que cela pourra aider tout le monde, merci pour votre soutien à ce site !

Pour des introductions plus détaillées aux verrous de thread Java et des exemples d'articles liés au code, veuillez prêter attention au site Web PHP chinois !

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn