Sau*_*mar 20 java concurrency multithreading
我可以声明这样的事吗?
static volatile boolean first=false;
Run Code Online (Sandbox Code Playgroud)
Mik*_*uel 65
扩展Michael的评论.
static 简单地表示不与包含类的实例相关联.
volatile 只是意味着其他线程可以在没有警告的情况下更改该值.
所以你的问题归结为"可以在没有警告的情况下由另一个线程更改与包含类的实例无关的字段吗?"
正如迈克尔指出的那样,这个问题的答案是肯定的.实例关联与并发修改正交.
Håv*_*d S 21
是的你可以.
staticJava中的变量每个类存储一次(每个对象不存储一次,例如非静态变量).这意味着所有对象(和静态方法)共享同一个变量.
将变量声明为volatile(是否为static)表明多个线程将频繁访问该变量.在Java中,这可以归结为指示线程无法缓存变量的值,但必须在变异后立即回写,以便其他线程看到更改.(默认情况下,Java中的线程可以自由缓存变量).
| 归档时间: |
|
| 查看次数: |
22430 次 |
| 最近记录: |