同步方法里调同步方法
来源:9-2 并发最佳实践
![](http://img1.sycdn.imooc.com/user/58cdfd8d000165c107410741-100-100.jpg)
朱小悬
2018-11-25
老师好!
假如一个类People 里面有两个synchronized方法:see()和write(),但是see方法里面调用了write方法。write方法就简单输出一句话。
see和write都不是静态方法。
现在new出来一个对象people,单线程下调用了see方法,发现可以走到wtite方法里面。
老师,这种情况是不是可以理解为synchronized是一把重入锁?
写回答
1回答
-
Jimin
2018-11-25
你好,synchronized确实是可重入锁,关于可重入锁,单独通过这个例子来理解容易出现偏颇,可以参考一下维基百科的定义:
若一个程序或子程序可以“在任意时刻被中断然后操作系统调度执行另外一段代码,这段代码又调用了该子程序不会出错”,则称其为可重入(reentrant或re-entrant)的。即当该子程序正在运行时,执行线程可以再次进入并执行它,仍然获得符合设计时预期的结果。与多线程并发执行的线程安全不同,可重入强调对单个线程执行时重新进入同一个子程序仍然是安全的。022018-11-29
相似问题