前面学习了多线成基础和synchroniezed的基本用法,现在两者结合起来使用,实现一个简单的计数需求。
需求
多个线程访问某个类,统计类的访问次数并输出。
实现
正确的写法
第一种实现方式:
public class SynchronizedCountNum {
public static void main (String[] args) {
int i = 0;
while (i < 10) {
Thread test = new CountThread();
test.start();
i++;
}
//SleepUtil.sleep(10000);
//System.out.println(Test.num);
}
static class CountThread extends Thread {
@Override
public void run () {
Test.doSomething();
}
}
static class Test {
public static int num = 0;
public synchronized static void doSomething() {
num++;
SleepUtil.sleep(1000);// 模拟做事
System.out.println(num);
}
}
}
输出结果:
1
2
3
4
5
6
7
8
9
10
从执行过程可以看出来,这种