为什么找不到i一个多线程的例子,java编译后说找不到i,请大虾们帮我看看:class NewThread implements Runnable {
String name;
Thread t;
NewThread(String threadname) {
name = threadname;
t = new Thread(this,name);
System.out.println("New thread: " + t);
t.start();
}
public void run() {
try {
for(int i = 5; i > 0; i--) {
System.out.println(name + ": " + i);
Thread.sleep(1000);
}
}catch (InterruptedException e) {
System.out.println(name + ": " + i);
}
System.out.println(name + "exiting.");
}
}class MultiThreadDemo {
public static void main(String args[]) {
new NewThread("One");
new NewThread("Two");
new NewThread("Three");
try {
Thread.sleep(10000);
} catch (InterruptedException e) {
System.out.println("Main thread Interrupted.");
}
System.out.println("Main thread exiting.");
}
}编译结果:
C:\Workspace>javac MultiThreadDemo.java
MultiThreadDemo.java:17: cannot find symbol
symbol : variable i
location: class NewThread
System.out.println(name + ": " + i);
^
1 error
String name;
Thread t;
NewThread(String threadname) {
name = threadname;
t = new Thread(this,name);
System.out.println("New thread: " + t);
t.start();
}
public void run() {
try {
for(int i = 5; i > 0; i--) {
System.out.println(name + ": " + i);
Thread.sleep(1000);
}
}catch (InterruptedException e) {
System.out.println(name + ": " + i);
}
System.out.println(name + "exiting.");
}
}class MultiThreadDemo {
public static void main(String args[]) {
new NewThread("One");
new NewThread("Two");
new NewThread("Three");
try {
Thread.sleep(10000);
} catch (InterruptedException e) {
System.out.println("Main thread Interrupted.");
}
System.out.println("Main thread exiting.");
}
}编译结果:
C:\Workspace>javac MultiThreadDemo.java
MultiThreadDemo.java:17: cannot find symbol
symbol : variable i
location: class NewThread
System.out.println(name + ": " + i);
^
1 error
System.out.println(name + ": " + i);
Thread.sleep(1000);
}
}catch (InterruptedException e) {
System.out.println(name + ": " + i);
}
不出错才怪呢
要注意区别全局变量与局部变量
String name;
Thread t;
NewThread(String threadname) {
name = threadname;
t = new Thread(this,name);
System.out.println("New thread: " + t);
t.start();
}
public void run() {
for(int i = 5; i > 0; i--) {
//note
try {
System.out.println(name + ": " + i);
Thread.sleep(1000);
}catch (InterruptedException e) {
System.out.println(name + ": " + i);
}//
}
System.out.println(name + "exiting.");
}
} class MultiThreadDemo {
public static void main(String args[]) {
new NewThread("One");
new NewThread("Two");
new NewThread("Three");
try {
Thread.sleep(10000);
} catch (InterruptedException e) {
System.out.println("Main thread Interrupted.");
}
System.out.println("Main thread exiting.");
}
}
int i;
for(i = 5; i>0; i--) {
System.out.println(name + ": " + i);
Thread.sleep(1000);
}
}catch (InterruptedException e){
System.out.println(name + ":" + i);
}