本帖最后由 刘克方 于 2012-6-14 21:24 编辑
synchronized在线程同步的时候为什么要使用对象监视器,什么是对象监视器?
具体解释:因为通过对象监控器才可以知道当前代码块是否有其他线程在执行,所以要使用对象监控器;
每个对象都有0和1标志位,通过它标志位的改变来控制同步锁的打开和关闭;
有同步块和同步方法,同步块前加synchronized(对象){ },为什么要有括号中的对象?这个对象的作用是什么?如果没有对象这个对象监视器会怎么样?
具体解释:括号中的对象为锁,如果已经有线程正在执行其中的代码,其标志位为1,代码块别锁定,其他线程无法进入;
当执行后标志位为0,表示其他线程进入可以执行其中代码
这个对象应该是哪个对象,可能我说的不够准确,或者应该说这个对象的监视器应该是哪个对象的监视器,是随便的吗,还是有什么要求?也不能太随便吧。
具体解释:这个对象没有具体要就,每个对象都可以当做锁;
|