public class Class1 {
public static void main(String args[]) {
ShareData shareDate = new ShareData(50);
Thread[] aThreadArray = new Thread[20];
System.out.println("\t刚开始的值是:" + shareDate.getVal());
System.out.println("\t多个线程正在工作,请稍等!");
for (int i = 0; i < 20; i++) {
int d = i % 2 == 0 ? 50 : -30;
aThreadArray[i] = new Thread(new MyMultiThreadClass(shareDate, d));
aThreadArray[i].start();
}
WhileLoop11: // 等待所有线程结束
while (true) {
for (int i = 0; i < 20; i++) {
if (aThreadArray[i].isAlive()) {
// System.out.println("if in");
continue WhileLoop11;
}
}
System.out.println("退出while循环");
break;
}
System.out.println("\t最后的结果是: " + shareDate.getVal());
}
}
class MyMultiThreadClass implements Runnable {
ShareData useInteger;
int delta;
MyMultiThreadClass(ShareData mrc, int d) {
useInteger = mrc;
delta = d;
}
public void run() {
for (int i = 0; i < 1000; i++) {
useInteger.modifyData(delta);
try {
Thread.sleep(10);// 做一些其他的处理
} catch (InterruptedException e) {
}
}
}
}
class ShareData {
int val;
ShareData(int initValue) {
val = initValue;
}
int getVal() {
return val;
}
private void putVal(int v) {
val = v;
}
//synchronized保证数据一致性
synchronized void modifyData(int d) {
putVal(getVal() + d);
}
}