首页 > Java > java教程 > 正文

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

高洛峰
发布: 2017-01-11 15:41:17
原创
1364 人浏览过

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中文网!

相关标签:
来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板