“同步”究竟有什么作用?锁定函数还是锁定对象函数?
2022-09-02 03:20:33
我想知道“同步”在java中是如何工作的。
假设我对一个由多个字段组成的棋盘游戏进行建模。我将字段实现为类(字段),将板实现为包含多个字段的类(板)。让我们进一步假设我在Field中建模了一个方法moveTo(Player pl),以便玩家移动到该字段。每个玩家由一个线程表示。
虽然所有线程应该同时执行一些操作(例如滚动其骰子),但一次只能有一个玩家移动。
我如何确保这一点?是否足以使方法 moveTo(Player pl) 同步?或者我需要在棋盘中使用级联方法来确保一次只有一个玩家移动?(或者有更好的解决方案)?
将其提升到底线:
“synchronized”是锁定具有此方法的每个对象中的方法,还是同步锁定仅在当前正在使用的对象中锁定方法?
如果是第二种情况:有没有一种简单的方法可以为实现此方法的每个对象锁定方法?
谢谢!!!