?????????????Java?????????????????????????????????????????????????????????????????????????????????????????????????????д????Ч????????????????????????????л??????Э????????wait??notify??notifyAll????Synchronized??Volatile?????????????????JDK???????????????????????????????????????????????????java.util.concurrent?????????????????÷????????????????????????????е???????£?????????к???????????????????????????????????????????
?????????????
??????????????????????????????????????е?????????????????Ч???????????????????????????????????????????????????????????????????????????????У??????????????????????????????????е????????????????????????????????????????????????????????????????????£??????????????????????????????Ч?????????????????????????????????????????????????????????????????1?????????μ?????
????????????
package com.paddx.test.concurrent;
public class ShareData {
public static int count = 0;
public static void main(String[] args) {
final ShareData data = new ShareData();
for (int i = 0; i < 10; i++) {
new Thread(new Runnable() {
@Override
public void run() {
try {
//???????????1??????????????????????
Thread.sleep(1);
} catch (InterruptedException e) {
e.printStackTrace();
}
for (int j = 0; j < 100; j++) {
data.addCount();
}
System.out.print(count + " ");
}
}).start();
}
try {
//?????????3????????????????????
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("count=" + count);
}
public void addCount() {
count++;
}
}
???????????????????count???м???????????1000?Σ??????????????10?????????????????????100?Σ?????????£???????1000???????????????????????????????????????????????????ε???н??????????е??????????????????????????????????????

?????????????????????????????????????o????????????????????????
??????????????
???????????????????????????????????з????????????????????????????????????????????ж???????????????????????????????????д???????????????????????????????????????????????????д???????????????л???????????????????????????????????????????磬?????????????????????????????????ж???????????????????????????????????????д???????????????????????????????????????б???????????????????????????Java ??????????????????????????????????Synchronized????????????????????м???Synchronized????У?
????????ζ???
package com.paddx.test.concurrent;
public class ShareData {
public static int count = 0;
public static void main(String[] args) {
final ShareData data = new ShareData();
for (int i = 0; i < 10; i++) {
new Thread(new Runnable() {
@Override
public void run() {
try {
//???????????1??????????????????????
Thread.sleep(1);
} catch (InterruptedException e) {
e.printStackTrace();
}
for (int j = 0; j < 100; j++) {
data.addCount();
}
System.out.print(count + " ");
}
}).start();
}
try {
//?????????3????????????????????
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("count=" + count);
}
/**
* ???? synchronized ?????
*/
public synchronized void addCount() {
count++;
}
}
???????????????????????????????ж???Σ??????????????1000??