1、计数器线程问题
import java.util.Random;
public class Sequence {
private int value;
public int getNext() {
return value++;
}
// 测试
public static void main(String[] args) {
Sequence seq = new Sequence();
// 创建多个线程
for (int i = 0; i < 3; i++) {
new Thread(new Runnable() {
@Override
public void run() {
while (true) {
System.out.println(Thread.currentThread().getName() + "===" + seq.getNext());
try {
Thread.sleep(50 * (new Random().nextInt(5) + 1));
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}).start();
}
}
}
运行结果:
Thread-0===0
Thread-1===1
Thread-2===2
Thread-1===3
Thread-0===4
Thread-1===5
Thread-1===7
Thread-2===8
Thread-0===6
Thread-2===9
Thread-1===11
Thread-2===10
Thread-0===12
Thread-1===13
Thread-0===14
Thread-2===15
Thread-0===16
Thread-1===17
Thread-0===18
Thread-1===19
Thread-2===19
Thread-0===20
Thread-1===22
Thread-0===21
Thread-2===23
Thread-1===24
Thread-0===25
Thread-2===26
Thread-1===27
Thread-2===28
Thread-1===29
Thread-0===30
Thread-1===32
Thread-2===31
Thread-1===33
Thread-0===34
Thread-0===35
Thread-0===36
Thread-1===37
Thread-2===36
Thread-1===38
Thread-0===39
Thread-1===40
Thread-0===41
Thread-2===42
Thread-1===43
Thread-2===44
Thread-1===45
Thread-2