这是JAVA
首先,我在h包里定义了一个CPU类,含有两个静态变量
package h;
import java.util.LinkedList;
public class CPU {
public static LinkedList<Long> timeLinked = new LinkedList<>();
public static long timeLong;
}
在m包定义了Test类,是线程内调用了Timer定时器,每个固定时间读取CPU类里的2个静态变量。
我在主函数中自增了long类型的静态变量timeLong,且每次自增后将其加入Linkedlist类型的静态变量timeLinked,然后输入它们俩。
package m;
import h.CPU;
import java.util.Timer;
import java.util.TimerTask;
public class Test implements Runnable{
@Override
public void run() {
System.out.println("timeLinked:"+CPU.timeLinked.toString());
Timer timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
System.out.println("timeLong:"+CPU.timeLong);
// System.out.println("timeLinked:"+CPU.timeLinked.toString());
}
},0,500);
}
public static void main(String[] args) {
Test test = new Test();
test.run();
while (true){
CPU.timeLong ++;
CPU.timeLinked.add(CPU.timeLong);
}
}
}
当运行Test时,程序可以正常
当我把前面的
System.out.println("timeLinked:"+CPU.timeLinked.toString());
注释,后面那句取消注释后,
在Timer定时器对应的run方法里访问timeLong是可以正常显示的,但是timeLinked却产生了报错,这是为什么呢?同样是静态变量,为什么静态的linkedlist就不能访问呢?