8种锁:
- 1.标准访问,先打印短信还是邮件
- 2.停留4秒在短信方法内,先打印短信还是邮件
- 3.新增普通的hello方法,先是打短信还是hello
- 4.现在有两部手机,先打印短信还是邮件
- 5.两个静态同步方法,1部手机,先打印短信还是邮件
- 6.两个静态同步方法,2部手机,先打印短信还是邮件
- 7.1个静态同步方法,1个普通同步方法,1部手机,先打印短信还是邮件
- 8.1个静态同步方法,1个普通同步方法,2部手机,先打印短信还是邮件
一、标准访问,先打印短信还是邮件
资源类
创建线程操作方法
结果,因为当前锁的是当前的phone对象,所以按照顺序按先打印短信后打印邮件
二、停留4秒在短信方法内,先打印短信还是邮件
结果是等待了4秒,因为当前锁的还是当前的phone对象
三、新增普通的hello方法,先是打短信还是hello
结果是先输出了普通方法hello,然后等待了4秒输出了SMS
四、现在有两部手机,先打印短信还是邮件
结果是EMAIL先输出,SMS等待了4秒在进行输出,因为当前锁的对象不同一个是phone对象一个是phone2对象
五、两个静态同步方法,1部手机,先打印短信还是邮件
结果,由于加上了static所以当前锁的是Class对象(类对象)也就是字节码对象,属于同一个大的对象,所以同步执行
六、两个静态同步方法,2部手机,先打印短信还是邮件
结果,由于加上了static所以当前锁的是Class对象(类对象)也就是字节码对象,属于同一个大的对象,所以同步执行
七、1个静态同步方法,1个普通同步方法,1部手机,先打印短信还是邮件
结果,sms锁的是字节码对象,一个锁的是当前对象,因此锁的不是同一把锁
八、1个静态同步方法,1个普通同步方法,2部手机,先打印短信还是邮件
结果,SMS锁的是字节码对象,EMAIL锁的是当前对象,因此锁的不是同一把锁
总结
1.普通同步方法,锁的是当前实例对象
2静态同步方法,锁的是类Class对象
3.同步方法块,锁的是synchronized括号里配置的对象