采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
老师好!假如一个类People 里面有两个synchronized方法:see()和write(),但是see方法里面调用了write方法。write方法就简单输出一句话。see和write都不是静态方法。现在new出来一个对象people,单线程下调用了see方法,发现可以走到wtite方法里面。老师,这种情况是不是可以理解为synchronized是一把重入锁?
你好,synchronized确实是可重入锁,关于可重入锁,单独通过这个例子来理解容易出现偏颇,可以参考一下维基百科的定义:若一个程序或子程序可以“在任意时刻被中断然后操作系统调度执行另外一段代码,这段代码又调用了该子程序不会出错”,则称其为可重入(reentrant或re-entrant)的。即当该子程序正在运行时,执行线程可以再次进入并执行它,仍然获得符合设计时预期的结果。与多线程并发执行的线程安全不同,可重入强调对单个线程执行时重新进入同一个子程序仍然是安全的。
老师,您说:当该子程序正在运行时,执行线程可以再次进入并执行它。 这种情况不是出现死循环了吗?
你是想说死锁?这个和死循环有啥关系,最多能想到递归吧
登录后可查看更多问答,登录/注册
构建完整并发与高并发知识体系,倍增高薪面试成功率!
1.7k 1
1.1k 18
1.2k 15
3.6k 12
1.3k 12