欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

java 线程锁详细介绍及实例代码

程序员文章站 2024-03-08 21:14:34
java 线程锁 在java线程中运用synchronized关键字来达到同步的 synchronized可以锁方法,锁类,锁对象,锁代码块 方法锁...

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

  }
}

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!