JAvaスレッドロックの詳細とインスタンスコード

1619 ワード

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

  }
}


読書に感謝して、みんなを助けることができることを望んで、みんなの当駅に対する支持に感謝します!