非静态同步函数的锁是:this
静态的同步函数的锁是:字节码对象
class Print2{
/*
* 非静态同步函数的锁是:this
*/
public void print1(){
synchronized (this) {
System.out.print("黑");
System.out.print("马");
System.out.print("程");
System.out.print("序");
System.out.print("员");
System.out.print("\r\n");
}
}
public synchronized void print2(){
System.out.print("传");
System.out.print("智");
System.out.print("播");
System.out.print("客");
System.out.print("\r\n");
}
}
class Print2{
/*
* 静态的同步函数的锁是:字节码对象
*/
public static void print1(){
synchronized (Print2.class) {
System.out.print("黑");
System.out.print("马");
System.out.print("程");
System.out.print("序");
System.out.print("员");
System.out.print("\r\n");
}
}
public static synchronized void print2(){
System.out.print("传");
System.out.print("智");
System.out.print("播");
System.out.print("客");
System.out.print("\r\n");
}
}
main方法
public class Demo013 {
public static void main(String[] args) {
Print2 print = new Print2();
Thread t1 = new Thread(){
@Override
public void run() {
for(int i=1;i<=100;i++){
print.print1();
}
}
};
Thread t2 = new Thread(){
@Override
public void run() {
for(int i=1;i<=100;i++){
print.print2();
}
}
};
t1.start();
t2.start();
}
}