程序代码如下:
public class ARunnable implements Runnable {
int a;
public void run() {
for(a=0;a<10;a++){
try {
Thread.sleep(100);
} catch (InterruptedException e) {
}
System.out
.println(Thread.currentThread().getName() + " a=" + a);
}
} public static void main(String[] args) {
ARunnable run=new ARunnable();
Thread thread1=new Thread(run);
Thread thread2=new Thread(run);
thread1.start();
thread2.start();
}
}运行的结果为:
Thread-0 a=0
Thread-1 a=1
Thread-1 a=2
Thread-0 a=3
Thread-1 a=4
Thread-0 a=4
Thread-0 a=6
Thread-1 a=7
Thread-1 a=8
Thread-0 a=9
Thread-1 a=10程序员结果怎么多了一行Thread-1 a=10呀,因为两个线程同时操作一个对象
但我在线程控制了循环为10次,但结果却多出一行呀。何解呀。
public class ARunnable implements Runnable {
int a;
public void run() {
for(a=0;a<10;a++){
try {
Thread.sleep(100);
} catch (InterruptedException e) {
}
System.out
.println(Thread.currentThread().getName() + " a=" + a);
}
} public static void main(String[] args) {
ARunnable run=new ARunnable();
Thread thread1=new Thread(run);
Thread thread2=new Thread(run);
thread1.start();
thread2.start();
}
}运行的结果为:
Thread-0 a=0
Thread-1 a=1
Thread-1 a=2
Thread-0 a=3
Thread-1 a=4
Thread-0 a=4
Thread-0 a=6
Thread-1 a=7
Thread-1 a=8
Thread-0 a=9
Thread-1 a=10程序员结果怎么多了一行Thread-1 a=10呀,因为两个线程同时操作一个对象
但我在线程控制了循环为10次,但结果却多出一行呀。何解呀。
Thread-1执行print语句,此时i = 10,然后执行i++,再进行i<10的判断,结束循环结果就成了那个样子了。