培训首页  >  培训新闻  >  软件开发新闻  >  Synchronized 关键字

Synchronized 关键字

来源:

沈阳市和平区爱尚职业培训机构

    发表于:2018-06-27 15:39:17  

  在爱尚沈阳java培训学习java编程中,经常需要用到同步,而用得多的也许是synchronized关键字了,下面爱尚沈阳java培训老师带你看看这个关键字的用法。

  synchronized只是一个内置锁的加锁机制,当某个方法加上synchronized关键字后,就表明要获得该内置锁才能执行,并不能阻止其他线程访问不需要获得该内置锁的方法。

  把synchronized当作函数修饰符时,示例代码如下:

  Public synchronized void method(){

  //….

  }

  这也就是同步方法,那这时synchronized锁定的是哪个对象呢?他锁定的是调用这个同步方法对象。也就是说,当一个对象P1在不同的线程中执行这个同步方法时,他们之间会形成互斥,达到同步的效果。但是这个对象所属的Class所产生的另一对象P2却能够任意调用这个被加了synchronized关键字的方法。下面就和爱尚沈阳java培训的老师看看到底要怎么用用吧。

  上边的示例代码等同于如下代码:

  public void method()

  {

  synchronized (this) // (1)

  {

  //…..

  }

  }

  (1)处的this指的是什么呢?他指的就是调用这个方法的对象,如P1。可见同步方法实质是将synchronized作用于object reference。――那个拿到了P1对象锁的线程,才能够调用P1的同步方法,而对P2而言,P1这个锁和他毫不相干,程式也可能在这种情形下摆脱同步机制的控制,造成数据混乱。

  区分 synchronized (this) 与 synchronized (Class.class)

  public class Test {

  private static class Counter {

  public void count() {

  synchronized (this){

  System.out.println(Thread.currentThread().getName() + " sleep");

  try {

  Thread.sleep(3000);

  } catch (InterruptedException e) {

  e.printStackTrace();

  }

  System.out.println(Thread.currentThread().getName() + " awake");

  }

  }

  public void doOtherThings(){

  synchronized (Counter.class){

  System.out.println(Thread.currentThread().getName() + " doOtherThings");

  }

  }

  }

  public static void main(String[] var0) {

  final Counter counter = new Counter();

  new Thread(new Runnable() {

  @Override

  public void run() {

  counter.count();

  }

  }).start();

  new Thread(new Runnable() {

  @Override

  public void run() {

  counter.doOtherThings();

  }

  }).start();

  }

  }


文中图片素材来源网络,如有侵权请联系删除
分享到:

Synchronized 关键字 原创内容,请点击沈阳软件开发培训

  • 软件开发
  • 软件测试
  • 数据库
  • Web前端
  • 大数据
  • 人工智能
  • 零基础
  • 有HTML基础
  • 有PHP基础
  • 有C语言基础
  • 有JAVA基础
  • 其他计算机语言基础
  • 周末班
  • 全日制白班
  • 随到随学

热门课程

  • 沈阳软件开发零基础培训班

    询价

  • Python全栈培训课程

    询价

  • 沈阳Python零基础就业培训班

    询价

  • 沈阳爱尚web前端培训课程

    询价

  • 沈阳大数据零基础培训课程

    询价