Thi*_*ilo 17
如果同步方法并尝试同时调用它两次,则一个线程必须等待两分钟.
这不是一个"缺点"的问题.同步是必要的还是不同步,具体取决于方法的作用.
如果代码仅在同一时间运行一次至关重要,那么您需要同步.
如果您只想同时运行一次代码以保留系统资源,您可能需要考虑计数信号量,这提供了更大的灵活性(例如能够配置并发执行的数量).
另一个有趣的方面是同步只能用于控制对同一JVM内资源的访问.如果您有多个JVM并且需要同步对共享文件系统或数据库的访问,那么synchronized关键字就不够了.您需要为此获得外部(全局)锁定.