java 有关线程问题的程序

来源:百度知道 编辑:UC知道 时间:2024/04/30 03:02:05
public class aa1{
public static void main (String[] args){
SimpleThread zf1 = new SimpleThread("线程1");
SimpleThread zf2 = new SimpleThread("线程2");

zf1.start();
zf2.start();
}
class SimpleThread extends Thread{
public SimpleThread(String str){
super(str);
}
public void run(){
for (int i=0; i<8;i++){
System.out.print(i+ "\t" + getName());
try{
sleep((long)(Math.random()*1000));
}catch (InterruptedException e){}

}
System.out.print(getName()+ "完成");
}
}
}
以上这段程序是我学习线程问题是所照书编写的。下面的那个继承类没啥问题,包括对run的重载。但是调试的时候总是说在我创建的两个线程zf1 zf2处 违反了:不能在静态的上下文中引用非静态变量。请帮忙解决下 谢谢

你这个问题是因为你将SimpleThread类建立在 类 aa1里边了...SimpleThread成了aa1的一个成员...main函数是一个静态函数(static),java中的静态函数只能访问静态的外部量,如果那个量不是静态的就会报那个错

解决的办法是将SimpleThread定义到aa1的外面去

netrice说的对

你这个SimpleThread 类是作为aa1的内部类,所以main()中是不能定义这个类的个对象的。你可以把SimpleThread 类放在aal类之外,就好了。