private final double[] energyBoxes; private final Object lockObj = new Object();
如上,为什么要用final修饰?
final修饰的数组只是说你的数组不能再指向其他数组对象, 但它指向的数组的内容是可以变的!
而final修饰的锁对象为了保证多线程进行过程中的安全
final可以理解为常量,不希望程序继续对变量进行修改了。这里energyBox用于判断能量守恒,lockObj作为锁的标记,都应该保持原来的状态,所以用final