1 java的监视器中支持两种 互斥和 协作
互斥: java通过对象锁 实现互斥,允许多个线程在同一个共享数据上 独立而互不影响的工作
协作: 通过Object 类的 wait和notify 方法来实现,允许多个线程为了同一个目标而工作。
2 对象锁
java程序 需要为两种多线程访问数据进行协调:
保存在堆中的 实例变量
保存在方法区中的 类变量
每个对象和类 逻辑上都是和一个监视器相关联的
对于对象:相关联的监视器保护对象的实例变量
对于类: 相关联的监视器 保护类的类变量
当java 虚拟机装载一个class文件的时候,他会创建一个java.lang.Class 类的实例。当锁住一个类的时候,实际上锁住的是哪个类的class 对象
3 同步语句
synahronized(this){}
4 同步方法
public synahronized void function(){}