我正在考虑使用静态方法,其中静态方法的输入将是用于获取方法的返回值的唯一项。我的应用程序将使用多个线程。我的问题是:我是否需要为方法同步/使用锁(或确保所使用的变量是易失性/原子长等)或者因为该方法是静态的并且我的方法仅使用方法中的输入来获取输出(而不是访问任何其他对象)。
答案 0 :(得分:7)
由于static
和线程安全是正交概念,一般答案是它取决于代码。
答案 1 :(得分:-1)
只存在static
个变量/对象的一个副本。重要的是你的方法的运作方式。
假设您的static
方法修改了Vector
,那么就不需要同步了。如果它正在修改ArrayList
,那么您需要同步
如果它是自定义类的对象,则需要同步。
您可能想要阅读有关线程安全性的更多内容=)