public class Text
{
private static int j;
public static void main(String args[]){
for(int i=0;i<2;i++){
new Thread(new Thread(){
public void run() {
for(int x=0;x<100;x++){
j++;
System.out.println(Thread.currentThread().getName()+" j:"+j);
}
}
}).start();
new Thread(new Thread(){
public void run() {
for(int x=0;x<100;x++){
j--;
System.out.println(Thread.currentThread().getName()+" j:"+j);
}
}
}).start();
}
}
}
用匿名内部类的话,多运行几次线程ID变成 1,3,5,7了 。 0,2,4,6, 线程哪去了?
用下面的方法就不会出现问题,怎么回事。
public class Text2
{
private static int j;
public static void main(String args[]){
Text2 t2 = new Text2();
Add add = t2.new Add();
Min min = t2.new Min();
for(int i=0;i<2;i++){
Thread t = new Thread(add);
Thread t1 = new Thread(min);
t.start();
t1.start();
}
}
class Add implements Runnable{
public void run() {
for(int x=0;x<100;x++){
j++;
System.out.println(Thread.currentThread().getName()+" j:"+j);
}
}
}
class Min implements Runnable{
public void run() {
for(int x=0;x<100;x++){
j--;
System.out.println(Thread.currentThread().getName()+" j:"+j);
}
}
}
}
|