package com.neutron.t03;
/**
* 解说内容:
* synchronized关键字使用在静态方法中
* 使用类.class作为锁
*/
public class T03 {
private static int count = 10;
public static void m() {
// 任何线程要执行下面的代码,必须先拿到T03.class这把锁
// 思考:此处是否可以使用synchronized (this)呢?
synchronized (T03.class) {
count --;
System.out.println(Thread.currentThread().getName() + " count:" + count);
}
}
public synchronized static void m2() {
// 任何线程要执行下面的代码,必须先拿到T03.class这把锁
count --;
System.out.println(Thread.currentThread().getName() + " count:" + count);
}
}
/*
过程解说:
1.如果想要使用当前类的m方法,由于m是静态方法,没有this可以去锁定,那么依旧要锁定某个对象(锁),那么需要锁定当前的Class对象
2.每次要执行m方法时,需要类.class对象来访问的,然后再执行代码块
3.静态的属性和方法是不需要new出来对象的,那么就没有this的存在
4.方法m和方法m2是等价的。
*/
thread03 - synchronized
最新推荐文章于 2019-01-03 16:42:55 发布