Dor*_*ham 2 java multithreading synchronization
如果我有一个只有一个这样的语句的getter方法
public class NumberClass{
int number;
public int getNumber() {
return number;
}
...
}
Run Code Online (Sandbox Code Playgroud)
多线程访问此方法,我是否必须同步此方法或没有必要,因为它只有一个语句?
我必须同步这个[get]方法,否则没有必要,因为它只有一个语句?
它与1个或多个语句无关.这取决于该值是否已在另一个线程中更新,以及您是否希望所有线程都看到一致的值.
如果number
字段在thread1中更新,则thread2可能会获得原始值或新值,具体取决于更新的同步方式.要使值适当地发布set和get方法都需要synchronized
.
如果您只是尝试共享一个int
值,那么将该number
字段标记为volatile
可行或使用一个AtomicInteger
可靠地共享多个线程之间的值可能更合适.
private volatile int number;
Run Code Online (Sandbox Code Playgroud)
或使用:
private AtomicInteger number = new AtomicInteger();
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
262 次 |
最近记录: |