加上volatile后,当在stage里面keeprunning值改变为false时候,军队线程也会立刻改变为false,然后停止攻击。不加的话可能军队没有及时收到值改变的消息,还在攻击。
2018-06-14
虽然听得有点懵,但是看得出老师很用心。之前评论区的热评简直看不下去,免费的教程,怎么还那么多话。。。爱看不看咯。。。。
2018-05-15
争用条件,应该就是《java并发编程实战》里说的竞态条件,也就是线程必须以一个正确的时序去访问数据才会出现正确的结果。
这句话可能有点难理解,那么举一个例子,最常见的竞态条件就是“先检查后执行”.
比如线程A执行if(i ==0)才能执行下面的语句,但是你检查和做出动作之间,有一个线程B将i的值改了,也就是使它不为0了,那么A线程已经判断了去执行下面的语句的时候,那肯定有错,毕竟i已经更改了, 不应该执行下面的语句。
这就是竞态条件。
线程A基于一个已经失效了的观测结果来决定下一步的动作,就会出现不正确的结果。这也就是为什么之前汽车人能量为什么总和不一样的原因。
这句话可能有点难理解,那么举一个例子,最常见的竞态条件就是“先检查后执行”.
比如线程A执行if(i ==0)才能执行下面的语句,但是你检查和做出动作之间,有一个线程B将i的值改了,也就是使它不为0了,那么A线程已经判断了去执行下面的语句的时候,那肯定有错,毕竟i已经更改了, 不应该执行下面的语句。
这就是竞态条件。
线程A基于一个已经失效了的观测结果来决定下一步的动作,就会出现不正确的结果。这也就是为什么之前汽车人能量为什么总和不一样的原因。
2018-05-15