请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

同步方法里调同步方法

老师好!
假如一个类People 里面有两个synchronized方法:see()和write(),但是see方法里面调用了write方法。write方法就简单输出一句话。
see和write都不是静态方法。

现在new出来一个对象people,单线程下调用了see方法,发现可以走到wtite方法里面。

老师,这种情况是不是可以理解为synchronized是一把重入锁?

正在回答 回答被采纳积分+3

1回答

Jimin 2018-11-25 22:05:08

你好,synchronized确实是可重入锁,关于可重入锁,单独通过这个例子来理解容易出现偏颇,可以参考一下维基百科的定义:
若一个程序或子程序可以“在任意时刻被中断然后操作系统调度执行另外一段代码,这段代码又调用了该子程序不会出错”,则称其为可重入(reentrant或re-entrant)的。即当该子程序正在运行时,执行线程可以再次进入并执行它,仍然获得符合设计时预期的结果。与多线程并发执行的线程安全不同,可重入强调对单个线程执行时重新进入同一个子程序仍然是安全的。

0 回复 有任何疑惑可以回复我~
  • 提问者 朱小悬 #1
    老师,您说:当该子程序正在运行时,执行线程可以再次进入并执行它。
    这种情况不是出现死循环了吗?
    回复 有任何疑惑可以回复我~ 2018-11-29 00:12:17
  • Jimin 回复 提问者 朱小悬 #2
    你是想说死锁?这个和死循环有啥关系,最多能想到递归吧
    回复 有任何疑惑可以回复我~ 2018-11-29 00:58:52
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信