多个线程同时访问一个变量,并依次对其数值加1,代码如下:
package com.bc.thread;
/**
* 多线程访问变量,依次加1
*
* @author ly
* @date 2011/09/02
*/
class MyThreadTest {
// 定义变量,可以不为static
private int NUM = 0;
public static void main(String[] args) {
MyThreadTest test = new MyThreadTest();
for (int i = 0; i < 10; i++) {
Thread thread = new Thread(test.new MyThread());
thread.start();
}
}
/**
* 同步应该放在主类中,若放在子类中,起不到加锁的目的 这样写相当于在this对象上加锁
*/
public synchronized void synAdd() {
System.out.println(NUM);
NUM++;
}
class MyThread implements Runnable {
public void run() {
synAdd();
}
}
}