packagelocks;/***@authorchunxiaozhang
* @date 2020/4/9 11:05
* @desc*/
public classPeopele {private static int sta_num = 1;private int num = 1;//无锁部分
public voidspeak() {
System.out.println ( Thread.currentThread ().getName ()+ ":开始。。。。。。。。。。");try{
Thread.sleep (1000);
System.out.println ( Thread.currentThread ().getName ()+ ":sta_num+1=" + (sta_num+1));
System.out.println ( Thread.currentThread ().getName ()+ ":num+1=" + (num+1));
}catch(InterruptedException e) {
e.printStackTrace ( );
}
System.out.println ( Thread.currentThread ().getName ()+ ":结束。。。。。。。。。。");
}//用于对象上
public voidspeak_this() {synchronized (this) {
System.out.println ( Thread.currentThread ().getName ()+ ":开始。。。。。。。。。。");try{
Thread.sleep (3000);
}catch(InterruptedException e) {
e.printStackTrace ( );
}
System.out.println ( Thread.currentThread ().getName ()+ ":结束。。。。。。。。。。");
}
}//用于类上
public voidspeak_class() {synchronized (Peopele.class) {
System.out.println ( Thread.currentThread ().getName ()+ ":开始。。。。。。。。。。");try{
Thread.sleep (3000);
}catch(InterruptedException e) {
e.printStackTrace ( );
}
System.out.println ( Thread.currentThread ().getName ()+ ":结束。。。。。。。。。。");
}
}//用于任意对象
public voidspeak_obj() {synchronized (newObject ()) {
System.out.println ( Thread.currentThread ().getName ()+ ":开始。。。。。。。。。。");try{
Thread.sleep (3000);
}catch(InterruptedException e) {
e.printStackTrace ( );
}
System.out.println ( Thread.currentThread ().getName ()+ ":结束。。。。。。。。。。");
}
}//用于方法上
public synchronized voidspeak_void() {
System.out.println ( Thread.currentThread ().getName ()+ ":开始。。。。。。。。。。");try{
Thread.sleep (3000);
}catch(InterruptedException e) {
e.printStackTrace ( );
}
System.out.println ( Thread.currentThread ().getName ()+ ":结束。。。。。。。。。。");
}//用于静态方法上
public synchronized static voidspeak_static_void() {
System.out.println ( Thread.currentThread ().getName ()+ ":开始。。。。。。。。。。");try{
Thread.sleep (3000);
}catch(InterruptedException e) {
e.printStackTrace ( );
}
System.out.println ( Thread.currentThread ().getName ()+ ":结束。。。。。。。。。。");
}
}