public class ThreadTest implements Runnable {
public synchronized void run(){
for(int i=0;i<10;i++){
System.out.println(" " + i);
}
}
public static void main(String[] args){
Runnable r1 = new ThreadTest();
Runnable r2 = new ThreadTest();
Thread t1 = new Thread(r1);
Thread t2 = new Thread(r2);
t1.start();
t2.start();
}
}
以上这段程序中的 i 变量并不是共享数据,也就是这里的Synchronized关键字并未起作用。因为t1,t2两个线程是两个对象(r1,r2)的线程。不同的对象其数据是不同的,所以r1和r2两个对象的i变量是并不是共享数据。
当把代码改成如下:Synchronized关键字才会起作用
public class ThreadTest implements Runnable {
public synchronized void run(){
for(int i=0;i<10;i++){
System.out.println(" " + i);
}
}
public static void main(String[] args){
// Runnable r1 = new ThreadTest();
// Runnable r2 = new ThreadTest();
Runnable r = new ThreadTest();
// Thread t1 = new Thread(r1);
// Thread t2 = new Thread(r2);
Thread t1 = new Thread(r);
Thread t2 = new Thread(r);
t1.start();
t2.start();
}
}