ホームページ  >  記事  >  Java  >  Javaスレッドロックの詳細な紹介とサンプルコード

Javaスレッドロックの詳細な紹介とサンプルコード

高洛峰
高洛峰オリジナル
2017-01-11 15:41:171309ブラウズ

Java スレッド ロック

Java スレッドで synchronized キーワードを使用して同期を実現します

synchronized はメソッドをロックし、クラスをロックし、オブジェクトをロックし、コード ブロックをロックできます

メソッド ロック

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

クラス ロック

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

オブジェクト ロック

電車の切符の販売を例に挙げてみましょう

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

読んでいただきありがとうございます、皆さんのお役に立てれば幸いです、このサイトのご支援に感謝いたします!

Java スレッド ロックに関するより詳細な紹介とサンプル コード関連記事については、PHP 中国語 Web サイトに注目してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。