在看书过程中,看到一个可见性的例子,结果自己运行了一下,没有可见性的问题,这是为什么,也没加同步锁啊
public class TestThread
{
private boolean ready;
private int number;
@Test
public void testVisibility() throws Exception
{
new Thread(()->{
System.out.println(ready+"\t"+number);
while(!ready)
{
try
{
Thread.sleep(1);
} catch (InterruptedException e)
{
e.printStackTrace();
}
}
System.out.println(number);
}).start();
Thread.sleep(1000);
number=42;
ready=true;
while (Thread.activeCount()>2)
{
Thread.yield();
}
}
}
结果:
false 0
42
按照书上来说,他应该一直循环下去的,结果他正常结束了.我用的java8.