我需要一个长实例变量 此变量将保留一些事件时间(以毫秒为单位的时间) 如果我只将值设置为此长并获取值,则 有没有使用AtomicLong(只有它的get()和set())而不是长的优势?
答案 0 :(得分:2)
AtomicLong用于诸如原子递增的序列号等应用程序中,不能用作Long 的替代品。
此特定类旨在用于多线程环境以确保线程安全。
除非您需要线程安全,否则请勿使用它。如果您只想要那些方法,可以为长变量提供自己的getter和setter。
答案 1 :(得分:1)
是的,有优势。
但是,如果您没有在多线程环境中进行操作,并且您想要的只是一个可变的长度,那么您最好使用自己的可变对象。在这种情况下使用AtomicLong
会让其他人感到困惑,并会执行不必要的缓存管理。
答案 2 :(得分:0)
如果你没有在自己的更新中使用它的值,你就不需要它了,但是如果你打算做var.set(1 + var.get())之类的东西,你可以在那里使用几个线程& #39; s等等,这种可能性:
线程1:x = var.get(); X = X + 1;
线程2:y = var.get(); Y = Y + 1;
线程1:var.set(x);
线程2:var.set(y);
根据该序列,用户希望该值增加2,但他们会看到它仅增加了1