public class Threadtest2 extends Thread
{
class MyThread extends Thread
{
String message;
MyThread(String str)
{
message=str;
}
public void run()
{
for(int i=0;i<3;i++)
System.out.println(message+""+getPriority());
}
};
public static void main(String arg[])
{
Thread t1=new MyThread("T1");
Thread t2=new MyThread("T2");
Thread t3=new MyThread("T3");
setPriority(Thread.MIN_PRIORITY);
start();
setPriority(Thread.MAX_PRIORITY);
start();
setPriority(Thread.MAX_PRIORITY);
start();
}};
如上程序,为什么在实例化内部类时会提示static方法无法调用非static方法
{
class MyThread extends Thread
{
String message;
MyThread(String str)
{
message=str;
}
public void run()
{
for(int i=0;i<3;i++)
System.out.println(message+""+getPriority());
}
};
public static void main(String arg[])
{
Thread t1=new MyThread("T1");
Thread t2=new MyThread("T2");
Thread t3=new MyThread("T3");
setPriority(Thread.MIN_PRIORITY);
start();
setPriority(Thread.MAX_PRIORITY);
start();
setPriority(Thread.MAX_PRIORITY);
start();
}};
如上程序,为什么在实例化内部类时会提示static方法无法调用非static方法
Thread t1=new MyThread("T1");
Thread t2=new MyThread("T2");
Thread t3=new MyThread("T3");
上面3句得这样写:
Threadtest2 tt = new Threadtest2();
Thread t1=tt.new MyThread("T1");
Thread t2=tt.new MyThread("T2");
Thread t3=tt.new MyThread("T3");
或者把MyThread声明为static的。
后面的也不对:
setPriority(Thread.MIN_PRIORITY);
start();
setPriority(Thread.MAX_PRIORITY);
start();
setPriority(Thread.MAX_PRIORITY);
start();这些都是non-static函数,得建立一个Threadtest2的对象才能调用。
t1.start();
t2.setPriority(Thread.MIN_PRIORITY);
t2.start();
t3.setPriority(Thread.MIN_PRIORITY);
t3.start();而且,Threadtest2 没有必要 extends Thread。
Thread t1 = new MyThread("T1");
Thread t2 = new MyThread("T2");
Thread t3 = new MyThread("T3");
t1.setPriority(Thread.MIN_PRIORITY);
t1.start();
t2.setPriority(Thread.MAX_PRIORITY);
t2.start();
t3.setPriority(Thread.MAX_PRIORITY);
t3.start();
}}class MyThread extends Thread {
String message; MyThread(String str) {
message = str;
} public void run() {
for (int i = 0; i < 3; i++)
System.out.println(message + "" + getPriority());
}
}