美文网首页
Java synchronized

Java synchronized

作者: 柳源居士 | 来源:发表于2019-03-27 21:37 被阅读0次

Java关键字,可以理解为线程锁。
实际上,synchronized(this)以及非static的synchronized方法,只能防止多个线程同时执行
同一个对象的同步代码段。
如:

public synchronized void synMethod(){
  //线程获得的是成员锁,即一次只能有一个线程进入该方法
}

或者:

public Object synMethod(Object a1){
  synchronized(a1){
  //一次只能有一个线程进入
  }
}
public void run(){
  synchronized(this){//对象锁,同一个对象间控制并发
  System.out.println(Thread.currentThread().getName());
  }
  }

以上代码表示只能用在同一个对象实体中,如果初始化多个实体,则线程锁不起作用,还是会并发执行。

而synchronized(Class.name) 或者 static synchronized,用来进行全局锁。

public void run(){
  synchronized(Thread.class){//全局锁
  System.out.println(Thread.currentThread().getName());
  }
  }

相关文章

网友评论

      本文标题:Java synchronized

      本文链接:https://www.haomeiwen.com/subject/jtesbxtx.html